我有两个目录在同一级别,我可以做:
rm -rf dir1/; rm -rf dir2/
但它们将按顺序运行,我如何并行删除它们?有没有一个通用的解决方案,让我可以扩展到许多文件夹?
更新
这些目录可以被深度嵌套,包含其他目录等等。
q7solyqu1#
在后台运行命令
rm -rf dir &; rm -rf dir2 &;
语法
long_command with arguments > redirection &
您可以通过将命令输出重定向到文件来捕获任何消息。此链接将帮助==〉http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html
问题标题&给出的例子给人的印象是问题很小。但额外的赏金显示了问题的严重性。最好指定文件的性质。然而,我提供了一些基于分割的删除,可以实现为并行执行,您可以根据您的要求尝试以下选项。
find /yourpath/folder1 -size +1048576 -exec rm -f {} \; & find /yourpath/folder2 -size +1048576 -exec rm -f {} \; &
ls -l /yourpath/folder1 | awk '{print $9}' | awk -F. '{print $(NF)}' |sort |uniq
你可能会得到这样的结果
.txt .log .tmp .zip
现在,根据扩展名删除文件
find yourpath/folder1 -name '*.txt' -exec rm {} \; & find yourpath/folder1 -name '*.tmp' -exec rm {} \; & find yourpath/folder1 -name '*.log' -exec rm {} \; & find yourpath/folder2 -name '*.txt' -exec rm {} \; & find yourpath/folder2 -name '*.tmp' -exec rm {} \; & find yourpath/folder2 -name '*.log' -exec rm {} \; &
find yourpath/folder1 -mtime +5 -exec rm {} \;
或
find yourpath/folder2 -mtime +5 |xargs rm
find foldername -exec rm -rf {} \; &
t5fffqht2#
如果您不想并行删除目录,可以使用GNU parallel执行许多并行操作。由于它通常不是发行版中的基本实用程序,因此您可能需要使用您最喜欢的包管理器安装它,例如。apt-get install parallel .但是,你可以做这样很酷的事情,比如你运行4个并行进程,想要显示进度,没有nag通知,让并行运行一个sleep命令,每个等待5s,10s,15s,20s。
apt-get install parallel
$ parallel -j 4 --progress --no-notice sleep ::: 5 10 15 20 Computers / CPU cores / Max jobs to run 1:local / 4 / 4 Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete local:0/4/100%/5.0s
您的示例将像这样运行:
$ parallel --no-notice rm -rf ::: dir1 dir2 dir3
请随意查阅fine tutorial。
8oomwypt3#
我必须尽快清理/media中的一些文件夹。以下命令能够在大约5分钟内删除80个磁盘中每个磁盘上的9 T数据
$ sudo find /media -maxdepth 2 -name "data-8" -type d | while read folder; do eval "sudo rm -rf ${folder} &"; done
这在后台踢了80个平行rm -rf
rm -rf
chy5wohz4#
如果有人回来找同样的解决方案。我想这样做要容易得多:1.进入你有其他子文件夹或文件要批量删除的文件夹。我们称之为target_folder
target_folder
cd target_folder
1.键入ls -la并输入
ls -la
[home@target_folder]$ ls -la
1.它将列出所有子文件夹和文件。最后一步。型号:
[home@target_folder]$ rm -rf {folder1,folder2,folder3,so on...}
只需双击文件名,然后右键单击粘贴,就可以了。一旦你完成了列出所有文件名。按回车键,瞧。所有文件夹或文件将被删除。
vwkv1x7d5#
很简单!!!rm -r文件夹1文件夹2文件夹3
sqougxex6#
在平面文本文件中创建文件夹列表(即list_delfolders)。然后在for循环或while循环中运行。$ cat list_delfolders|while读取id;do rm -rf“$ids”;完成
nhn9ugyo7#
简单的解决方案:转到目标文件夹并执行rm -r 'some regex',与regex匹配的文件夹名称将被删除。
7条答案
按热度按时间q7solyqu1#
在后台运行命令
语法
您可以通过将命令输出重定向到文件来捕获任何消息。
此链接将帮助==〉http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html
编辑:
问题标题&给出的例子给人的印象是问题很小。但额外的赏金显示了问题的严重性。
最好指定文件的性质。然而,我提供了一些基于分割的删除,可以实现为并行执行,您可以根据您的要求尝试以下选项。
你可能会得到这样的结果
现在,根据扩展名删除文件
或
t5fffqht2#
如果您不想并行删除目录,可以使用GNU parallel执行许多并行操作。由于它通常不是发行版中的基本实用程序,因此您可能需要使用您最喜欢的包管理器安装它,例如。
apt-get install parallel
.但是,你可以做这样很酷的事情,比如你运行4个并行进程,想要显示进度,没有nag通知,让并行运行一个sleep命令,每个等待5s,10s,15s,20s。
您的示例将像这样运行:
请随意查阅fine tutorial。
8oomwypt3#
我必须尽快清理/media中的一些文件夹。
以下命令能够在大约5分钟内删除80个磁盘中每个磁盘上的9 T数据
这在后台踢了80个平行
rm -rf
chy5wohz4#
2020更新
如果有人回来找同样的解决方案。我想这样做要容易得多:
1.进入你有其他子文件夹或文件要批量删除的文件夹。我们称之为
target_folder
1.键入
ls -la
并输入1.它将列出所有子文件夹和文件。最后一步。型号:
只需双击文件名,然后右键单击粘贴,就可以了。一旦你完成了列出所有文件名。按回车键,瞧。所有文件夹或文件将被删除。
vwkv1x7d5#
很简单!!!
rm -r文件夹1文件夹2文件夹3
sqougxex6#
在平面文本文件中创建文件夹列表(即list_delfolders)。然后在for循环或while循环中运行。$ cat list_delfolders|while读取id;do rm -rf“$ids”;完成
nhn9ugyo7#
简单的解决方案:转到目标文件夹并执行rm -r 'some regex',与regex匹配的文件夹名称将被删除。