我有一個包含數字命名的子目錄(例如,1,2,3,32000,43546)的目錄。我需要刪除一定數量的所有目錄。例如,我需要刪除名稱數值上大於14234的所有子目錄。可以使用單個命令行操作完成此操作嗎?如何使用shell腳本根據數字名稱值刪除目錄?
rm -r /directory/subdirectories_over_14234 (how can I do this?)
我有一個包含數字命名的子目錄(例如,1,2,3,32000,43546)的目錄。我需要刪除一定數量的所有目錄。例如,我需要刪除名稱數值上大於14234的所有子目錄。可以使用單個命令行操作完成此操作嗎?如何使用shell腳本根據數字名稱值刪除目錄?
rm -r /directory/subdirectories_over_14234 (how can I do this?)
那麼你可以做循環指令的一慶典,以遍歷目錄文件名,並使用測試命令,然後提取該文件名的目標數量後。
應該是這樣的:
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
你不提的shell你使用。我使用的是Zsh,它有一個非常酷的功能:它可以根據您的需要選擇基於數字的文件!所以,你可以做
$ rm -r /directory/<14234->(/)
超過14234.
一般選擇/directory
與數值的所有子目錄,您使用
<a-b>
選擇與數值路徑在a
和b
之間。您追加(/)
只匹配目錄。使用(.)
僅匹配文件。 Zsh中的glob patterns功能非常強大,並且可以大部分(如果不是總是)替換舊的find
命令。
在bash,我會寫
for dir in *; do [[ -d $dir ]] && ((dir > 14234)) && echo rm -r $dir; done
由您自行決定刪除echo
。
你在用什麼外殼? – 2012-02-16 21:45:46
好問題。我怎樣才能確定這一點? – 2012-02-16 21:51:50
'echo $ SHELL'是第一步,或'echo $ BASH_VERSION' – 2012-02-16 21:57:18