2012-02-16 77 views
1

我有一個包含數字命名的子目錄(例如,1,2,3,32000,43546)的目錄。我需要刪除一定數量的所有目錄。例如,我需要刪除名稱數值上大於14234的所有子目錄。可以使用單個命令行操作完成此操作嗎?如何使用shell腳本根據數字名稱值刪除目錄?

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

你在用什麼外殼? – 2012-02-16 21:45:46

+0

好問題。我怎樣才能確定這一點? – 2012-02-16 21:51:50

+0

'echo $ SHELL'是第一步,或'echo $ BASH_VERSION' – 2012-02-16 21:57:18

回答

2

那麼你可以做循環指令的一慶典,以遍歷目錄文件名,並使用測試命令,然後提取該文件名的目標數量後。

應該是這樣的:

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

你不提的shell你使用。我使用的是Zsh,它有一個非常酷的功能:它可以根據您的需要選擇基於數字的文件!所以,你可以做

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

超過14234.

一般選擇/directory與數值的所有子目錄,您使用

<a-b> 

選擇與數值路徑在ab之間。您追加(/)只匹配目錄。使用(.)僅匹配文件。 Zsh中的glob patterns功能非常強大,並且可以大部分(如果不是總是)替換舊的find命令。

2

在bash,我會寫

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

由您自行決定刪除echo

相關問題