これで、おそらく質問は解決したと思いますが、スイッチfindを使用したときに表示されていないファイルがあったため、私の場合はうまくいきませんでした。-regexそこで、を使用してこの回避策を開発しlsました。それが誰かに役立つことを願っています。
基本的に、私にとってうまくいったのはこれでした:
ls -1 -R -i | grep -a "[^A-Za-z0-9_.':@ /-]" | while read f; do inode=$(echo "$f" | cut -d ' ' -f 1); find -inum "$inode" -delete; done
部分的に分割する:
ls -1 -R -i
これにより、現在のディレクトリの下にあるファイルが再帰的に ( -R) リスト ( ) され、1 行に 1 ファイル ( )、各ファイルの前に inode 番号 ( ) が付けられます。結果は にパイプされます。ls-1-igrep
grep -a "[^A-Za-z0-9_.':@ /-]"
-a最終的にバイナリになる場合でも、各入力をテキスト ( ) と見なして各エントリをフィルター処理します。grepリストで指定されたものとは異なる文字が含まれている場合、行は通過します。結果は にパイプされwhileます。
while read f
do
inode=$(echo "$f" | cut -d ' ' -f 1)
find -inum "$inode" -delete
done
これwhileにより、すべてのエントリが繰り返され、inode 番号が抽出され、inode が に渡されfindます。これにより、ファイルが削除されます。