0
138.096.000.015.00111-138.096.201.072.38717
138.096.000.015.01008-138.096.201.072.00790
138.096.201.072.00790-138.096.000.015.01008
138.096.201.072.33853-173.194.020.147.00080
138.096.201.072.34293-173.194.034.009.00080
138.096.201.072.38717-138.096.000.015.00111
138.096.201.072.41741-173.194.034.025.00080
138.096.201.072.50612-173.194.034.007.00080
173.194.020.147.00080-138.096.201.072.33853
173.194.034.007.00080-138.096.201.072.50612
173.194.034.009.00080-138.096.201.072.34293
173.194.034.025.00080-138.096.201.072.41741

たくさんのファイルが入っているフォルダがたくさんあります。ファイル名は上記のようなものです。ファイル名が「138.096.000」のファイルを削除したいのですが。

また、サブストリングが「00080」のファイル名のファイルのリストを取得したい場合もあります。

4

2 に答える 2

1

「138.096.000」を含む名前のファイルを削除するには:

find /root/of/files -type f -name '*138.096.000*' -exec rm {} \;

「00080」を含む名前のファイルを一覧表示するには:

find /root/of/files -type f -name '*00080*'
于 2012-10-29T10:27:52.200 に答える
0
rm $(find . -name \*138.096.000\*)

これは、findコマンドを使用して適切なファイルを検索します。これはサブシェル内で実行され、出力(ファイルのリスト)はによって使用されrmます。シェルは*それ自体を拡張しようとするため、*パターンのエスケープに注意してください。

これは、スペースなどを含むファイル名がないことを前提としています。次のようなことをお勧めします。

for i in $(find . -name \*138.096.000\*); do
   rm $i
done

このシナリオでは、あるいは

find . -name \*138.096.000\* | xargs rm

上記のループでは、rmファイルごとに実行し、xargsバリアントはrm複数回実行されることに注意してください(ファイルの数によって異なりますが、実行できるのは1回だけです)。

ただし、zshを使用している場合は、次のようにすることができます。

rm **/*138.096.000*

(私はあなたのディレクトリがあなたのファイルのように名前が付けられていないと仮定しています。-fこれが事実である場合、カミルの答えで使用されるフラグに注意してください)

于 2012-10-29T10:25:00.663 に答える