linux的bash – 从另一个目录中删除一个目录中的所有文件

我想使用bash命令从Linux中的另一个文件夹中删除文件夹中的所有文件。

我需要这两件事情:

  • 我得到了一些设置脚本,复制一些预configuration的configuration文件。 我想有select再次删除这些文件
  • 有时会发生这样的情况:归档文件被解压缩到您的下载目录的根目录中,而不是放入子目录中,因为打包文件的人员将所有文件都归档

什么是最好的方式来做到这一点?

编辑,澄清:

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

你可以使用下面的命令:

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

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

但是,你必须小心,如果new-files文件中new-files删除other-directory的文件,将无法使用此方法恢复旧文件。 您应该考虑使用版本控制系统(例如Git )。

从你的:

编辑,澄清:

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

您可以循环访问原始目录中的new-files/并删除other-directory/具有相同名称other-directory/

 for file in /new-files/* do rm /other-directory/"$file" done 

凌辱脚本去做你想做的事情:

 pushd `pwd` cd /path/to/new-files x=`find . -type f` popd echo $x | xargs rm