人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

UNIXのコマンドで、最後がスペース(または改行)で終わっているファイルを探す方法を教えてください。

●質問者: takoma
●カテゴリ:コンピュータ
✍キーワード:UNIX コマンド ファイル
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● くまっぷす
●30ポイント

http://www.linux.or.jp/JM/html/GNU_findutils/man1/find.1.html

Manpage of FIND

find . -type f -regex ”^.* $”

でスペースで終わってるもの(確認済)

find . -type f -regex ”^.*¥n$”

で改行で終わってるもの(要確認、すみません)

が見つかるはずです。結果がみたい場合は末尾に -print 付けてください。

◎質問者からの返答

回答ありがとうございます。

ファイル名ではなく、ファイルの中身です。説明不足ですいません。


2 ● dev_zer0
●30ポイント

http://www.linux.or.jp/JM/html/GNU_textutils/man1/tail.1.html

Manpage of TAIL

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でエラーになります

◎質問者からの返答

回答ありがとうございます。

やはり、コマンドひとつでは駄目ですか…


3 ● masanobuyo
●30ポイント

http://www.goo.ne.jp/

goo

最後が空白行で終わっているファイルを探すということでしょうか.単一のコマンドはおそらくないので,以下のようなシェルスクリプトにしてはいかがでしょう.実行するときはスクリプト名の後ろに調べたいファイル名を一つ以上列挙します.


#!/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 ] &&`”の部分を取り除きます.

◎質問者からの返答

回答ありがとうございました。

やはりコマンドひとつでは無理なようですね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ