GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリおよびサブディレクトリ内のすべてのゼロバイト ファイルを検索する

Bash 4+ テスト済み - これはサイズ 0 を検索する正しい方法です:

find /path/to/dir -size 0 -type f -name "*.xml"

サイズ 0 の複数のファイル拡張子を検索:

find /path/to/dir -size 0 -type f \( -iname \*.css -o -iname \*.js \)

注:\( ... \) を削除すると、結果はこの要件を満たすすべてのファイルになるため、サイズ 0 は無視されます。


上記の回答に加えて:

これらのファイルを削除したい場合

find $dir -size 0 -type f -delete

いいえ、わざわざ grep する必要はありません。

find $dir -size 0 ! -name "*.xml"

サイズ 0 の $dir 以下のすべてのファイルの名前を出力するには:

find "$dir" -size 0

03 のすべての実装ではないことに注意してください。 はデフォルトで出力を生成するため、以下を実行する必要がある場合があります:

find "$dir" -size 0 -print

質問の最後のループに関する 2 つのコメント:

文字列内の他のすべての単語を反復して代替値がゼロであるかどうかを確認するのではなく、行を反復することで、空白で発生している問題を部分的に解消できます。例:

printf '1 f1\n0 f 2\n10 f3\n' | while read size path; do
    test "$size" -eq 0 && echo "$path"; done

ls によって出力されたパスのいずれかに改行が含まれている場合、これは失敗することに注意してください。これにより、次の 2 つのポイントが補強されます。 、およびパスに空白を許可しない適切な命名ポリシーがあります。

次に、ループからデータを出力するために、出力を 20 まで変数に格納する必要はありません。 それ。単純にループにその出力を stdout に書き込むようにさせると、同じことが達成されますが、保存は回避されます。


Linux
  1. すべてのファイルとディレクトリを再帰的に一覧表示する方法

  2. ディレクトリ内のすべてのファイルを解凍します

  3. すべてのサブディレクトリで一致するファイルを削除します

  1. ディレクトリ(およびそのサブディレクトリ)内のすべてのpdfファイルを単一の出力ディレクトリに再帰的にコピーするにはどうすればよいですか?

  2. サブディレクトリ内のすべてのファイルをコピーし、上書きする代わりに名前を変更する

  3. ディレクトリ内のすべてのゼロバイトファイルを見つける方法

  1. Linuxですべてのファイルとディレクトリ名を小文字に変更

  2. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  3. 検索を使用して特定のディレクトリを検索し、1つのディレクトリを除くその中のすべてのファイルを削除しますか?