まれなファイルを見つける方法に役立つ答えに基づいて
https://unix.stackexchange.com/a/573434/426237
私はこのコマンドを思い出しましたが、まれなファイル(またはディスクから正確にゼロのファイル)を削除します。
find *.* -type f -printf "%S\t%p\n" | gawk '$1 == 0 {print $2}' | xargs rm
残念ながら、ファイル名にスペースが含まれていると問題が発生します。この場合、名前は複数の列に分けられます。空白が含まれていても、gawkがファイル名全体を出力するようにこのパイプコマンドを変更できますか?それとも別のルートを使用する必要がありますか?
[コンテキスト:私はWindowsでbashシェル(Git bash)を使用して、ディスクにファイルがない同期されていないDropboxファイルを見つけて削除しています。 ]
答え1
find | gawk | xargs
何らかの理由でパイプが本当に必要な場合は、次のことを試してください(テストされていません)。
find . -type f -printf '%S %p\0' |
gawk 'BEGIN{RS=ORS="\0"} $1 == 0 {sub(/^[^ ]+ /,""); print}' |
xargs -0 echo
テスト完了後echo
にに変更してください。rm