我有一个包含数字命名子目录的目录(例如,1,2,3,32000,43546)。我需要删除一定数量的所有目录。例如,我需要删除名称在数字上大于14234的所有子目录。可以通过单个命令行操作完成吗?
rm -r /directory/subdirectories_over_14234 ( how can I do this? )
答案 0 :(得分:2)
您可以执行bash for循环指令,以便迭代目录文件名并使用 test 命令,然后提取文件名的目标编号。
应该是这样的:
for $file in /your/path
do
#extract number here with any text processing command (ed ?)
if test [$name -leq your_value]
then
rm -R $file
fi
done
答案 1 :(得分:2)
在bash中,我写了
for dir in *; do [[ -d $dir ]] && (( dir > 14234 )) && echo rm -r $dir; done
自行决定删除echo
。
答案 2 :(得分:1)
您没有提到您正在使用的shell。我正在使用Zsh它有一个非常酷的功能:它可以根据你想要的数字选择文件!所以你可以做到
$ rm -r /directory/<14234->(/)
选择/directory
的所有子目录,其数值超过14234。
一般情况下,您使用
<a-b>
在a
和b
之间选择数值的路径。您附加(/)
仅匹配目录。使用(.)
仅匹配文件。 Zsh中的glob patterns非常强大,并且大部分(如果不是总是)可以替换旧的find
命令。