Bash 如何删除与特定字符位置匹配的文件?

Bash 如何删除与特定字符位置匹配的文件?,bash,filesystems,Bash,Filesystems,我正在尝试删除文件名中包含特定位置的特定数字。使用bash和包含这些特定数字的文本文件 我有一个目录,其中包含以下命名约定中的文件:2019-08-06-11-35-13_2091232924_4569.mp3 我有一个包含我想匹配和删除的区号的文本文件。其中一个区号是209。从文件名右侧读取总是一致的。因此,我想将右边的17、18、19字符与文本文件进行匹配,然后使用bash删除这些文件。我尝试过普通通配符匹配,但它会删除其他位置具有这些数字的文件。您可以使用?通配符,匹配任何单个字符 rm

我正在尝试删除文件名中包含特定位置的特定数字。使用bash和包含这些特定数字的文本文件

我有一个目录,其中包含以下命名约定中的文件:2019-08-06-11-35-13_2091232924_4569.mp3

我有一个包含我想匹配和删除的区号的文本文件。其中一个区号是209。从文件名右侧读取总是一致的。因此,我想将右边的17、18、19字符与文本文件进行匹配,然后使用bash删除这些文件。我尝试过普通通配符匹配,但它会删除其他位置具有这些数字的文件。

您可以使用?通配符,匹配任何单个字符

rm ????-??-??-??-??-??_209???????_????.mp3
但是,似乎所有的通配符都是数字,因此您可以使用[0-9]而不是?而且更安全

rm [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_209[0-9][0-9][0-9][0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9].mp3
如果您从文件中获取区号,则可以将模式中的209替换为从文件中指定的变量

rm ????-??-??-??-??-??_"$code"??????_????.mp3

您可能可以使用xargs执行以下操作:


xargs-n1到目前为止您尝试了什么?对于$cat areacodes.txt中的f;做rm?????-??-??-??-??-??$f??????*done@Barmar知道了!有了这个,我得到了:bash removefiles.sh rm:??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??$cat areacodes.txt中的f没有这样的文件或目录;rm?????-??-??-??-??-??-??-??-??$f???我是否输入了错误的号码?在209Aha之后,我也应该抓住它。这太棒了!