繁体   English   中英

如何使用Shell脚本基于目录的数字名称值删除目录?

[英]How can I delete directories based on their numeric name value with a shell script?

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

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

好了,您可以执行bash for loop指令,以便遍历目录文件名并在提取文件名的目标编号之后使用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

用bash,我会写

for dir in *; do [[ -d $dir ]] && (( dir > 14234 )) && echo rm -r $dir; done

您可以自行决定删除echo

您没有提到正在使用哪个shell。 我正在使用Zsh ,它具有一个非常酷的功能:它可以根据需要选择基于数字的文件! 所以你可以做

$ rm -r /directory/<14234->(/)

选择/directory所有子目录,其数字值超过14234。

通常,您使用

<a-b>

选择数字值ab之间a路径。 您追加(/)仅匹配目录 使用(.)仅匹配文件 Zsh中的glob模式非常强大,可以(如果不是总是)替换掉旧的find命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM