Ls
如何列出 *.tar.gz,每行一個文件名?
我試圖列出每個
.tar.gz
文件,只使用以下命令:
ls *.tar.gz -l
…它向我顯示了以下列表:
-rw-rw-r-- 1 osm osm 949 Nov 27 16:17 file1.tar.gz -rw-rw-r-- 1 osm osm 949 Nov 27 16:17 file2.tar.gz
但是,我只需要以這種方式列出它:
file1.tar.gz file2.tar.gz
也不是:
file1.tar.gz file2.tar.gz
這是如何“正確”完成的?
該
-1
選項(數字“one”,而不是小寫“L”)將每行列出一個文件,沒有其他資訊:ls -1 -- *.tar.gz
如果您只需要文件名,您可以使用
printf
:printf '%s\n' *.tar.gz
…外殼會將
*.tar.gz
萬用字元擴展為文件名,然後printf
將它們列印出來,每個後跟一個換行符。此輸出與嵌入換行符的文件名的輸出略有不同:ls
設置
$ touch file{1,2}.tar.gz $ touch file$'\n'3.tar.gz
ls
$ ls -1 -- *.tar.gz file1.tar.gz file2.tar.gz file?3.tar.gz
列印
$ printf '%s\n' *.tar.gz file1.tar.gz file2.tar.gz file 3.tar.gz