首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >linux bash -将位于一个目录中的所有文件从另一个目录中删除。

linux bash -将位于一个目录中的所有文件从另一个目录中删除。
EN

Stack Overflow用户
提问于 2013-05-27 12:41:26
回答 3查看 12.5K关注 0票数 23

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

我需要这个做两件事:

  • 我有一些安装脚本,复制一些预先配置的配置文件。我想选择再次删除这些文件。
  • 有时,档案被解压缩到下载目录的根目录而不是子put中,因为打包文件的人将所有东西都放在存档根目录中。

最好的方法是什么?

编辑,澄清:

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

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-27 12:58:49

您可以使用以下命令:

代码语言:javascript
运行
复制
cd new-files ; find . -exec rm -rf path/to/other-directory/{} \;

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

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

票数 25
EN

Stack Overflow用户

发布于 2013-05-27 13:00:50

从你的:

编辑,澄清:

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

您可以循环遍历原始的dir new-files/并删除other-directory/中同名的文件。

代码语言:javascript
运行
复制
for file in /new-files/*
do
   rm /other-directory/"$file"
done
票数 6
EN

Stack Overflow用户

发布于 2013-05-27 12:47:44

我们用脚本来做你想做的事:

代码语言:javascript
运行
复制
pushd `pwd`
cd /path/to/new-files
x=`find . -type f`
popd

echo $x | xargs rm
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16773457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档