私のフォルダ~/list
には、それぞれ独自のサブフォルダやサブサブフォルダなどを含む大量のフォルダがあり、ほぼ各レベルに多くのファイルがあるとしましょう。ただし、これらのファイルとフォルダーの一部は空です。空のファイルとフォルダーを見つけるためにそれらをすべて再帰的に検索するにはどうすればよいですか?そして、それらがファイルの場所のリストに表示されるようにして、それぞれがどこにあるかを知るようにします(すべてのファイルがファイル拡張子を持っているわけではないので、ファイルとフォルダーが明確であるべきです)。 Ubuntu GNOME 15.10とGNOME 3.18を実行しています。
注意してくださいファイルが空に見えたが空ではなかったかどうかも教えてくれると非常に便利です(たとえば、スペースや改行が入っているなど)。また、real空のファイルと、出力で空に見えるファイルを区別します。
man find
から
-empty File is empty and is either a regular file or a directory.
したがって、空のファイルとディレクトリの両方を見つけるには、それで十分です
find ~/lists -empty
タイプを示すには、%y
出力フォーマット指定子を使用できます
%y File's type (like in ls -l), U=unknown type (shouldn't happen)
例えば.
find ~/lists -empty -printf '%y %p\n'
または--classify
オプションを含むls
などの外部プログラムを使用します
-F, --classify
append indicator (one of */=>@|) to entries
つまり.
find ~/lists -empty -exec ls -Fd {} \;
「空」の定義が空白文字のみを含むファイルを含むように拡張されると、少なくとも空でないファイルを実際に開いてその内容を調べる必要があるため、より複雑になり、計算量が増えます。私が頭の外から考えることができる最も効率的な方法は、次のようなものです
find ~/list \( -empty -o \( -type f -a ! -exec grep -qm1 '[^[:blank:]]' {} \; \) \) -exec ls -Fd {} \;
(空、ORファイル、およびgrepは少なくとも1つの非空白文字を検出しません)。おそらくより良い方法があります。
~/list
フォルダーから:
find . -empty -type d
空のディレクトリをリストするため
find . -empty -type f
空のファイルをリストします。
find . -type f -exec bash -c 'if [ `cat "{}" |wc -w` -eq 0 ]; then echo "file - {}";fi' \; -or -empty -exec bash -c "echo dir - {}" \;
空白や空行を含む空のフォルダーとファイルを一覧表示するための