這是命令從目錄中刪除任何東西比X檔案更保持X目錄中的文件,並刪除所有舊文件
(ls -t|head -n 5;ls)|sort|uniq -u|xargs rm
我想如何修改這個從外面做同樣的使用命令行
這是命令從目錄中刪除任何東西比X檔案更保持X目錄中的文件,並刪除所有舊文件
(ls -t|head -n 5;ls)|sort|uniq -u|xargs rm
我想如何修改這個從外面做同樣的使用命令行
使用發現只有保持X最新文件:
find /path/to/dir ! -newer $(ls -t | sed 'x!d') -exec rm {} \;
目錄試試這個:
cd /path/to/dir && { (ls -t|head -n 5;ls)|sort|uniq -u|xargs rm; }
在非現有目錄的情況下,它不會做任何事情。
爲您的原始線我建議您可以反轉排序並使用頭排除最後一行。它然後變成:
ls -drt ~/somedir/* | head -n-5 | xargs rm
我會鼓勵你調查這樣的問題的查找命令。你獲得更多的控制,你可以處理之類的東西的關係(例如,刪除舊文件,比第五古老)
有喜歡懸而未決的細節:
ls
猜你要非遞歸你的想法是什麼。爲找到人網頁有例子,但類似:
DIR=cdplatform && find $DIR -maxdepth 1 -type f ! -newer $(ls -Fdrt ${DIR}/* | grep -v "/$" | head -n-4 | tail -1) -exec rm {} \;
我想通過一個腳本來做到這一點。我有一個問題,如果我使用你的建議,腳本現在假設它生活在/ path/to/dir中? 。 – highriser
@highriser:不,您可以將此行保存到腳本中並將腳本放在其他位置。然後從path-to-dir作爲參數調用腳本。請注意,在這種情況下,您需要修改這樣的行:'cd「$ 1」&& {(ls -t | head -n 5; ls)| sort | uniq -u | xargs rm; }如果你真的希望腳本考慮到這個參數。您也可以首先檢查是否提供了「$ 1」。 – Bentoy13