我正在嘗試創建一個應該從目錄刪除多餘文件的單線程,以避免消耗太多空間。始終保持n個最新文件在目錄中
ls -r --sort=time | head -${{ls | wc -l} - n} | xargs rm -f
n應代表我想保留在目錄中的文件數。
我在這裏做錯了什麼,無法弄清楚什麼。有人可以幫忙嗎?
我正在嘗試創建一個應該從目錄刪除多餘文件的單線程,以避免消耗太多空間。始終保持n個最新文件在目錄中
ls -r --sort=time | head -${{ls | wc -l} - n} | xargs rm -f
n應代表我想保留在目錄中的文件數。
我在這裏做錯了什麼,無法弄清楚什麼。有人可以幫忙嗎?
(ls -t | head -n 25 ; ls) | sort | uniq -u | sed -e 's,.*,"&",g' | xargs rm
完成了我的詭計。
Delete all but the most recent X files in bash < - 在這裏
感謝您的答覆。
那${{...}}
看起來有點像TCL什麼的。這當然不是有效的shell腳本。
在Bash中(但不是在Bourne shell中),你可以使用((...))
作爲算術表達式,我猜是你想要「 - n」做的。
過程替換的語法是帶圓括號的$(ls | wc -l)
。
合併這兩個,你可能最終得到類似(($(ls | wc -l) - n))
,但你真的should not be parsing ls
output無論如何。看看這個問題的許多重複之一,以獲得更好的方法。