Linux:在目录中查找文件,使用其他名称进行备份,替换它

时间:2018-06-08 10:12:24

标签: linux bash

在Linux中,我试图在目录中查找文件,使用其他名称进行备份,然后将其替换为另一个名称。

我用这些命令尝试了前两个动作

find foldername -name filename.html; -exec sed -i .bak;

但它说

  

bash:-exec:command not found

2 个答案:

答案 0 :(得分:0)

试试这个:

find foldername -name filename.html -exec cp -vp {}{,.bak} \; -exec truncate -s 0 {} \;

这会使用find的{​​{1}}选项,就像您尝试使用它一样。然后exec复制文件(使用cp指定)并将{}附加到副本,并使用.bak选项保留它的内容:

  

保留指定的属性(默认值:                 模式,所有权,时间戳),如果可能的话,附加属性:                 context,links,xattr,all

这也保留了原始文件。

答案 1 :(得分:-1)

您可以执行以下操作:

find . -name 'FILE_PATTERN_HERE' | xargs -I file_name cp file_name file_name.bkp

您可以使用findcp命令的输出传递给xargs。此处file_name充当find的输出。

示例

find . -name 'logback.xml*'

输出:

./logback.xml
./apache-cassandra-3.11.1/conf/logback.xml

运行命令后

find . -name 'logback.xml*' | xargs -I file_name cp file_name file_name.bkp
find . -name 'logback.xml*'

输出:

./logback.xml
./apache-cassandra-3.11.1/conf/logback.xml
./apache-cassandra-3.11.1/conf/logback.xml.bkp
./logback.xml.bkp