如何删除匹配特定字符位置的文件?
How to delete files matching specific character placement?
我正在尝试删除其名称在特定位置包含特定数字的文件。使用 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 <input.txt sh -c 'rm *_*_*.mp3' {}
我正在尝试删除其名称在特定位置包含特定数字的文件。使用 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 <input.txt sh -c 'rm *_*_*.mp3' {}