Linux批量文件重命名/复制

时间:2016-01-05 21:31:59

标签: linux unix

在Linux中,我有一个永久性的目录结构,可以追溯到2005年的每个月存储5种不同类型的文件,就像这样

2005/01 / file1 file2 file3 file4 file5

2005/02 / file1 file2 file3 file4 file5

...

2015/11 / file1 file2 file3 file4 file5

2015/12 / file1 file2 file3 file4 file5

我需要从相同的临时目录结构替换file1的每个实例,除了临时结构中的每个叶子只有file1(file2 / 3/4/5不存在)。如何执行一个批量命令将每个file1重命名为永久结构中的file1.bak,然后将命令复制到永久结构中的每个新file1实例?

3 个答案:

答案 0 :(得分:1)

我首先从多重名称开始 - cd进入你要搜索的根目录..(上面/2015/)。

find spec -name "*file1" -exec sh -c 'echo mv "$1" "$(echo "$1" | sed s/file1\$/bak.file1/)"' _ {} \;

如果您确定文件结构相同,那么只需执行一个质量cp。让我们假设我们正在使用/var/www/2015//var/www/COPY/,这两个目录在内部是相同的结构......然后只是

cp -R /var/www/COPY/* /var/www/2015/

2015COPY内的{' T EXIST'中的任何文件将从/var/www/COPY/复制到/var/www/2015/而不会覆盖现有文件(file2,3 4 5)等)。

答案 1 :(得分:1)

您可以使用此命令将所有file1重命名为file1.bak

find . -name file1 | sed -e "p;s/file1/file1.bak/" | xargs -n2 mv

然后使用file1

复制新文件cp -R

答案 2 :(得分:0)

另一个对您有用或可能没有用的替代方法是vidir,它位于Debian系列发行版的moreutils包中。

它会在$EDITOR(或您系统的默认编辑器)中打开您的目录,您可以根据自己的内容编辑此处的文件。然后,您可以使用$EDITOR的搜索/替换功能重命名文件并保存。