在Linux中,我试图在目录中查找文件,使用其他名称进行备份,然后将其替换为另一个名称。
我用这些命令尝试了前两个动作
find foldername -name filename.html; -exec sed -i .bak;
但它说
bash:-exec:command not found
答案 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
您可以使用find
将cp
命令的输出传递给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