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 命令来查找适当的文件。这是在subshel​​l中执行的,输出(文件列表)由rm. 注意 * 模式的转义,因为 shell 会尝试扩展*自己。

这假设您没有带有空格等的文件名。您可能更喜欢执行以下操作:

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

在这种情况下,甚至

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

请注意,在上面的循环中,您将为rm每个文件执行,并且xargs变体将执行rm多次(取决于您拥有的文件数量 - 它可能只执行一次)。

但是,如果您使用的是zsh ,那么您可以简单地执行以下操作:

rm **/*138.096.000*

(我假设您的目录没有像您的文件一样命名。-f如果是这种情况,请注意卡米尔的回答中使用的标志)

于 2012-10-29T10:25:00.663 回答