find . -type f -regex ”^.* $”
でスペースで終わってるもの(確認済)
find . -type f -regex ”^.*¥n$”
で改行で終わってるもの(要確認、すみません)
が見つかるはずです。結果がみたい場合は末尾に -print 付けてください。
tailを利用してperlで作ってみました。
---- hoge.pl ここから----
#!/bin/perl
foreach $f ( @ARGV ) {
open(IN, ”tail -c1 $f |”);
$_ = <IN>;
if($_ eq ” ”) {
print ”last SP:$f¥n”;
} elsif ($_ eq ”¥n”) {
print ”last LF:$f¥n”;
}
close(IN);
}
---- hoge.pl ここまで----
上記をファイルに保存して、実行権限を付けて
./hoge.pl *
とすると、最後がスペースの場合は「last SP:ファイル名」
最後が改行の場合は「last LF:ファイル名」と出力されます。
ディレクトリの場合は、tailでエラーになります
回答ありがとうございます。
やはり、コマンドひとつでは駄目ですか…
最後が空白行で終わっているファイルを探すということでしょうか.単一のコマンドはおそらくないので,以下のようなシェルスクリプトにしてはいかがでしょう.実行するときはスクリプト名の後ろに調べたいファイル名を一つ以上列挙します.
#!/bin/sh
for f; do
[ -s $f ] && [ `tail -1 $f | wc -w` -eq 0 ] && echo $f
done
例: スクリプトの名前をscriptとすれば,
$ ./script *.c
a.c
b.c
wcは空白以外の文字の続きを単語として扱うという使用を利用しています.サイズが0のファイルは除外していますが,それを含めるならば”[ -s $f ] &&`”の部分を取り除きます.
回答ありがとうございました。
やはりコマンドひとつでは無理なようですね。
回答ありがとうございます。
ファイル名ではなく、ファイルの中身です。説明不足ですいません。