复制同一文件夹中的文件并替换其名称中的年份

复制同一文件夹中的文件并替换其名称中的年份

如何在同一目录中复制大量文件并替换其名称中的年份?

我有这个(可以是不同的文件名和扩展名):

filename1-2014.ext
filename2-2014.ext
filename3-2014.ext
...
filenamen-2014.ext

我想要这个:

filename1-2014.ext
filename1-2015.ext
filename2-2014.ext
filename2-2015.ext
filename3-2014.ext
filename3-2015.ext
...
filenamen-2014.ext
filenamen-2015.ext

我可以制作一个脚本来做到这一点,但我想知道是否有一种简单的方法可以做到这一点?

答案1

  • 与查找:

    find . -type f -name '*2014*' -exec bash -c 'cp "$0" "${0/2014/2015}"' {} \;
    
  • 在 shell 循环中:

    for file in *2014*; do
        cp "$file" "${file/2014/2015}"
    done
    

答案2

for i in *-2014.ext; do
  cp "$i" "${i%2014.ext}2015.ext"
done

对于每个文件,删除旧后缀并添加新后缀。

如果您有不同的扩展,您可以使用 bash 的模式替换功能:

for i in *-2014.*; do
  cp "$i" "${i/2014/2015}"
done

相关内容