重复
无法删除一切的文件夹中,除了FILEA
我猜想,这是稍微与此类似:删除[^音乐]
但是,这是行不通的。
无法删除一切的文件夹中,除了FILEA
我猜想,这是稍微与此类似:删除[^音乐]
但是,这是行不通的。
把下面的命令添加到您的〜/ .bashrc
shopt -s extglob
现在,您可以删除所有文件夹中的其他人除了由音乐文件夹
rm -r !(Music)
请小心使用该命令。 它功能强大,但也很危险,。
我建议用命令始终测试
echo rm -r !(Music)
命令
rm (ls | grep -v '^Music$')
应该管用。 如果您有一些“文件”也子目录,然后你想递归地删除它们,太:
rm -r (ls | grep -v '^Music$')
警告 : rm -r
可能是危险的,你可能不小心删除了很多文件。 如果你想确认你将被删除的内容,尝试寻找在输出
ls | grep -v '^Music$'
说明 :
ls
命令列出目录内容; 不带参数,则默认为当前目录。 |
重定向输出到另一个命令; 当的输出ls
以这种方式被重定向,它打印一个每行的文件名,而不是在一列格式如果键入你会看到ls
在交互式终端。 grep
命令相匹配图案线; 所述-v
开关装置到不匹配的模式打印行。 ^Music$
手段来匹配行开始,以音乐结束-也就是说,只有字符串音乐; 所述的效果^
(行的开始)和$
也可与所获得的(行尾)字符-x
开关,如在grep -vx Music
。 command (subcommand)
是接受一个命令的输出,并通过它在作为命令行参数,以另一种鱼的方式。 rm
命令删除文件。 默认情况下,它不会删除目录,但-r
(“递归”)选项改变了。 您可以了解这些命令,更通过键入man command
,在command
是你想学什么。
所以我到处找一种方式来删除目录中的所有文件,除了一些目录和文件,我想保持周围。 一番搜索后,我想出了一个办法使用find做到这一点。
find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;
本质上,它使用正则表达式来选择目录,从结果中排除然后删除其余的文件。 只想把它列在这里,以防别人需要它。