1

我有一个文件列表。他们遵循这种模式:_000n_NAME.PNG(文件编号为 n)

在终端(Linux 或 Mac OS)中,是否可以在单个命令中删除我所有文件的“ 000n ”?

4

2 回答 2

2

你可以使用它:

  find . -iname '_000n*.png' | sed -e 's/\(_000n_\(.*.png\)\)/\1 \2/g' | xargs -n 2 mv
  • find :将列出当前文件夹中名为 _000n*.png 的所有文件,从而满足您的需要
  • sed :将提取正确的部分并显示原始+新名称
  • xargs -n 2 :将参数传递给下一个按 2 分组的命令
  • mv : 将重命名

_000n_toto1.png,_000n_toto2.png和文件夹中的其他文件进行测试

于 2013-07-19T11:26:01.117 回答
2

Sed 可以完成这项工作:

sed 's/^_[0-9]*\(_.*\)$/_\1/'

如果您还想去除下划线(数字前后):

sed 's/^_[0-9]*_\(.*\)$/\1/'

完整脚本:

while read f; do
    mv "$f" $(echo "$f"|sed 's#^.*_[0-9]*_\(.*\)$#\1#')
done < <(find . -name "_0*_NAME.PNG")
于 2013-07-19T11:20:35.677 回答