我有一個包含子目錄的目錄,其中一些名稱是數字。沒有看,我不知道數字是什麼。我如何刪除號碼最高的子目錄?我認爲解決方案可能會將子目錄按相反順序排序,並選擇以數字開頭的第一個子目錄,但我不知道如何執行此操作。感謝您的幫助。如何刪除具有最高號碼名稱的目錄?
2
A
回答
2
cd $yourdir #go to that dir
ls -q -p | #list all files directly in dir and make directories end with/
grep '^[0-9]*/$' | #select directories (end with /) whose names are made of numbers
sort -n | #sort numerically
tail -n1 | #select the last one (largest)
xargs -r rmdir #or rm -r if nonempty
建議先運行它沒有xargs -r rmdir
或xargs -r rm -r
部分,以確保您的刪去正確的事情。
0
讓我們做一些目錄來測試腳本:
mkdir test; cd test; mkdir $(seq 100)
現在
find -mindepth 1 -maxdepth 1 -type d | cut -c 3- | sort -k1n | tail -n 1 | xargs -r echo rm -r
結果:
rm -r 100
現在,從命令刪除單詞echo
和xargs
將執行rm -r 100
。
+0
如果只有兩個名爲'a'和'0'的目錄,那麼它將不起作用:OP指定子目錄名的_some_是數字;不是所有的人。 – 2014-10-09 17:58:50
+0
對,'find'缺少參數'-regex「./ [0-9] +」'。 – 2014-10-09 19:21:24
1
純巴什解決方案:
#!/bin/bash
shopt -s nullglob extglob
# Make an array of all the dir names that only contain digits
dirs=(+([[:digit:]])/)
# If none found, exit
if ((${#dirs[@]}==0)); then
echo >&2 "No dirs found"
exit
fi
# Loop through all elements of array dirs, saving the greatest number
max=${dirs[0]%/}
for i in "${dirs[@]%/}"; do
((10#$max<10#$i)) && max=$i
done
# Finally, delete the dir with largest number found
echo rm -r "$max"
注:
- 這將有一個不可預知的行爲時有與相同數量的顯示目錄,但有不同的寫法,例如,
2
和0002
。 - 如果數字溢出Bash的數字將會失敗。
- 不考慮負數和非整數。
- 刪除最後一行中的
echo
如果您滿意的話。 - 從您的目錄中運行。
相關問題
- 1. 如何從目錄名稱中刪除最後的「點」
- 2. unix如何刪除以危險名稱命名的目錄
- 3. 如何刪除與父目錄中的文件具有相同名稱的子目錄中的文件?
- 4. 刪除除了具有最高值的項目的所有項目從陣列
- 5. Datarepeater刪除只刪除最高記錄
- 6. 如何刪除軟件包名稱中的上一級目錄
- 7. 刪除目錄名
- 8. 如何從字典中刪除具有最高值的密鑰?
- 9. localStorage刪除具有特定名稱的項目
- 10. 如何刪除表中所有具有類似名稱
- 11. Silex路由問題 - 刪除頁面名稱和目錄名稱
- 12. 如何刪除明文中具有相同名稱的文件
- 13. 刪除目錄名稱(shell)中的所有點
- 14. 如何從所有子目錄遞歸刪除具有特定名稱的所有文件夾?
- 15. 刪除目錄,根據目錄名稱日期
- 16. 如何檢索具有Powershell的遞歸目錄名稱?
- 17. 刪除一個具有子目錄的目錄(非空)
- 18. 如何阻止我的DEL命令刪除子目錄中具有相同名稱的文件?
- 19. 如何在Laravel中刪除路徑名中的項目名稱
- 20. 碼頭:刪除具有特定名稱的碼頭圖像類型
- 21. 正在刪除所有具有名稱的列上的列
- 22. 刪除XML名稱空間,而忽略根目錄下的名稱空間
- 23. FirebaseStorage:如何刪除目錄
- 24. FTPClient如何刪除目錄?
- 25. 如何刪除子目錄
- 26. 刪除所有具有相反符號的記錄
- 27. 如何刪除組中的最高值
- 28. 在RapidMiner中獲取具有最高值的屬性名稱
- 29. 無法刪除名稱中包含空格的目錄
- 30. 刪除部分完整的目錄名稱?
我會給你+1,但不要分析'ls':'printf「%s \ n」*/| grep -v'[^ 0-9 /]'|排序......' – 2014-10-09 17:12:51
@glennjackman爲什麼不呢? – PSkocik 2014-10-09 17:23:09
@PSkocik'mkdir $'a \ n10000''。驚喜。 – 2014-10-09 17:52:22