我想使用bash命令从linux中的另一个文件夹中删除文件夹new-files
中存在的所有文件。
我需要两件事:
最好的方法是什么?
编辑,澄清:
new-files
。cp -r new-files/* other-directory/
。 答案 0 :(得分:17)
您可以使用以下命令:
cd new-files ; find . -exec rm -rf path/to/other-directory/{} \;
它将列出从new-files
目录(new-files
目录中复制的所有文件都不会被考虑在内。对于每个文件,它将删除other-directory
中的复制版本。
但是要小心,如果new-files
中的文件删除other-directory
中的文件,您将无法使用此方法恢复旧文件。您应该考虑使用版本控制系统(例如Git)。
答案 1 :(得分:5)
来自你的:
编辑,澄清:
- 我找到了一个名为
的文件夹new-files
。- 现在我执行
cp -r new-files/* other-directory/
。- 让我们说其他目录不是我想要复制它们的目录,但它已经包含其他文件所以我不能只做rm 其他目录/*.
- 我需要删除我意外复制的所有文件夹。我该怎么做?
醇>
您可以遍历原始目录new-files/
并删除other-directory/
中具有相同名称的文件:
for file in /new-files/*
do
rm /other-directory/"$file"
done
答案 2 :(得分:2)
小脚做你想做的事:
pushd `pwd`
cd /path/to/new-files
x=`find . -type f`
popd
echo $x | xargs rm