21

我想new-files使用 bash 命令从 linux 中的另一个文件夹中删除文件夹中存在的所有文件。

我需要这个做两件事:

  • 我得到了一些设置脚本,它们复制了一些预先配置的配置文件。我希望可以选择再次删除这些文件
  • 有时,档案会被解压到您的下载目录的根目录中,而不是子目录中,因为打包文件的人将所有内容都放到了档案根目录中

最好的方法是什么?

编辑,澄清:

  1. 我有一个文件夹,其中包含名为new-files.
  2. 现在我执行cp -r new-files/* other-directory/.
  3. 可以说 other-directory 不是我想要将它们复制到的目录,但它已经包含其他文件,所以我不能只执行 rm other-directory/*。
  4. 我需要删除我不小心复制的所有文件夹。我怎么做?
4

3 回答 3

23

您可以使用以下命令:

cd new-files ; find . -exec rm -rf path/to/other-directory/{} \;

它将列出从new-files目录复制的所有文件(new-files不考虑目录)。对于每个文件,它将删除other-directory.

但是你要小心,如果一个文件在new-files擦除一个文件other-directory,你将无法使用这种方法恢复旧文件。您应该考虑使用版本控制系统(例如Git)。

于 2013-05-27T12:58:49.240 回答
6

从你的:

编辑,澄清:

  1. 我有一个文件夹,其中包含名为new-files.
  2. 现在我执行cp -r new-files/* other-directory/.
  3. 可以说 other-directory 不是我想要将它们复制到的目录,但它已经包含其他文件,所以我不能只执行 rm other-directory/*。
  4. 我需要删除我不小心复制的所有文件夹。我怎么做?

您可以遍历原始目录new-files/并删除以下文件中具有相同名称的文件other-directory/

for file in /new-files/*
do
   rm /other-directory/"$file"
done
于 2013-05-27T13:00:50.610 回答
2

wee 脚本来做你想做的事:

pushd `pwd`
cd /path/to/new-files
x=`find . -type f`
popd

echo $x | xargs rm
于 2013-05-27T12:47:44.243 回答