我怎样才能删除除音乐-subfolder我的文件夹中的所有文件,?(How can I delete

2019-10-29 22:19发布

重复

无法删除一切的文件夹中,除了FILEA

我猜想,这是稍微与此类似:删除[^音乐]

但是,这是行不通的。

Answer 1:

把下面的命令添加到您的〜/ .bashrc

shopt -s extglob 

现在,您可以删除所有文件夹中的其他人除了由音乐文件夹

rm -r !(Music)

请小心使用该命令。 它功能强大,但也很危险,。

我建议用命令始终测试

echo rm -r !(Music)


Answer 2:

命令

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是你想学什么。



Answer 3:

所以我到处找一种方式来删除目录中的所有文件,除了一些目录和文件,我想保持周围。 一番搜索后,我想出了一个办法使用find做到这一点。

find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;

本质上,它使用正则表达式来选择目录,从结果中排除然后删除其余的文件。 只想把它列在这里,以防别人需要它。



文章来源: How can I delete all files in my folder, except Music -subfolder?