Ls

避免列出以 ~ 結尾的文件(備份文件)

  • July 19, 2021

我的要求是列出目錄中的所有文件,除了以 a 結尾的~文件(備份文件)。

我嘗試使用命令:

ls -l | grep -v ~    

我得到這個輸出:

asdasad
asdasad~
file_names.txt
normaltest.txt
target_filename
testshell1.sh
testshell1.sh~
testshell2.sh
testshell2.sh~
testtwo.txt
testtwo.txt~
test.txt
test.txt~

我只想獲取這些文件:

asdasad
file_names.txt
normaltest.txt
target_filename
testshell1.sh
testshell2.sh
testtwo.txt
test.txt
ls -l | grep -v ~

這不起作用的原因是波浪號被擴展到您的主目錄,因此grep永遠不會看到文字波浪號。(參見例如Bash 的關於波浪號擴展的手冊。)您需要引用它以防止擴展,即

ls -l | grep -v "~"

當然,這仍然會刪除任何帶有波浪號的任何輸出行,即使在文件名中間或ls輸出中的其他地方(儘管它可能不太可能出現在使用者名、日期等中)。如果您真的只想忽略以波浪號結尾的文件,您可以使用

ls -l | grep -v "~$"

ls(在大多數 Linux 系統上找到)的 GNU 實現有一個選項:-B忽略備份:

ls --ignore-backups

引用自:https://unix.stackexchange.com/questions/471577