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
我有很多文件夹里面有很多文件,文件名就像上面那样 我想删除文件名为substring“138.096.000”
的文件有时候我想得到文件列表,文件名是子字符串“00080”
答案 0 :(得分: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*'
答案 1 :(得分:0)
rm $(find . -name \*138.096.000\*)
这使用find命令查找适当的文件。这在子shell 中执行,输出(文件列表)由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*
(我假设您的目录没有像您的文件一样命名。请注意Kamil的答案中使用的-f
标志,如果是这样的话)