2015-10-13 76 views
0

我目前正在处理bash shell中的一个问题,将一个目录复制到一个新目录中,并且当您检查该新目录时,它将更改它所复制的文件的名称。不知道如何字它到底,所以我会告诉什么是应该输出:复制bash目录后,在新的directoy中编辑文件名?

-------$ ls -a myproject/ 
./ ../ file1 file2.c file3.txt .this_is_a_hidden_file 
-------$ bkup myproject mybackup 
-------$ ls -a mybackup 
./ ../ file1-BACKUP file2-BACKUP.c file3-BACKUP.txt 

那么,什么情况是,我在脚本中第二个参数bkup副本什么是第一个参数,然后编辑姓名的参数#1的文件到茎和扩展之间添加“-backup”(如:file2.c之间做出file2-BACKUP.c

我想通了如何复制使用cp -a sourceDir./ destinationDir的目录,但我将如何修改destinationDir内的文件名?任何帮助表示赞赏!谢谢。

回答

1

使用重命名命令重命名使用正则表达式的多个文件,请尝试以下

# change directory to the destination folder 
$ cd destinationDir 

# rename all files 
# -n flag will only display how files will be renamed 
# once satisfied then remove the -n flag from below command and it will actually rename all files 
$ rename -n -v 's/(.+?)(\.[^.]*$|$)/$1-BACKUP$2/' * 

可以参数化的命令,包括这在你的脚本(BKUP) 我不是在我的Linux机器的前面。所以如果你看到任何错误,请测试并告诉我。

+0

它看起来像从输出'file1更名为file1-BACKUP'的作品,但是当我做'ls -a foo'时,名字仍然是一样的。 NEVERMIND我得到它!谢谢!!!! –

+0

无法理解您的评论,命令应将file1重命名为file1-BACKUP,file1.c至file1-BACKUP.c,.this_is_hidden为.this_is_hidden-BACKUP。你正在寻找别的东西或告诉我情况(与预期的输出)这是失败 – narendra

+0

这是伟大的代码,这正是我正在寻找,但有一个条件,我想知道你可以帮我。对于.this_is_hidden,我们可以有没有改变? –

相关问题