名前に文字列を含むディレクトリ内のすべてのファイルを(再帰的に)削除しようとしています。最終的に私はこのようにしたいと思います。
find . -type f -name '*.m3d*' -delete
ただし、削除を実行する前に、次の内容を含むすべてのファイルがあるかどうかをテストします。
find . -type f -name '*.m3d*'
ただし、これにより不完全なリストが返されます。
./Result/h-field (f=15)_1,1.m3d
./Result/e-field (f=15)_1,1.m3d
./Result/h-field (f=15)_2,1.m3d
./Result/e-field (f=15)_2,1.m3d
完全なリストは以下から見ることができます。
find . | grep m3d
./Result/e-field (f=15)_1,1_m3d.rex
./Result/h-field (f=15)_1,1.m3d
./Result/e-field (f=15)_1,1.m3d
./Result/h-field (f=15)_2,1_m3d.rex
./Result/e-field (f=15)_2,1_m3d.rex
./Result/h-field (f=15)_2,1.m3d
./Result/e-field (f=15)_2,1.m3d
findのマニュアルページを読みましたが、最初の試みで行ったように、文字列の末尾にワイルドカードを使用することはできません。私の文字列を含むが必ずしも名前の末尾に来る必要はないすべてのファイルを削除する良い方法は何ですか?
答え1
現在使用しているバージョンが何であるかはわかりませんが、find
文字列の末尾にワイルドカードが機能しないという言及が見つかりませんでした。
問題は、ファイル名を指定する方法のようです。検索に表示されないファイルは、文字列の前にドット()がなく、アンダー*.m3d*
スコア()があるため、指定された基準に一致しません。.
m3d
_
find
このコマンドは、find . -type f -name '*m3d*'
与えられた例でこれらのファイルをすべて見つけることができるはずです。