如何使用shell脚本根据数字名称值删除目录?

时间:2012-02-16 21:28:16

标签: linux shell rm

我有一个包含数字命名子目录的目录(例如,1,2,3,32000,43546)。我需要删除一定数量的所有目录。例如,我需要删除名称在数字上大于14234的所有子目录。可以通过单个命令行操作完成吗?

rm -r /directory/subdirectories_over_14234 ( how can I do this? )

3 个答案:

答案 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>

ab之间选择数值的路径。您附加(/)仅匹配目录。使用(.)仅匹配文件。 Zsh中的glob patterns非常强大,并且大部分(如果不是总是)可以替换旧的find命令。