Bash
如何對帶有空格的文件名進行排序並連接文件?
我很不幸處理包含空格的文件名。我想連接文件名包含空格的文件。我還想對文件名進行數字排序。顯然以下失敗:
cat $(ls *.sql | sort -n)
因為
foo bar.sql
作為兩個參數傳遞給cat
. 這里通常的方法是什麼?
這裡不需要
ls
。*.sql
它是通過擴展glob列出目錄內容的 shell 。在 GNU 或 FreeBSD 系統上:
printf '%s\0' *.sql | sort -nz | xargs -r0 cat --
(使用
\0
而不是\n
與-z/-0
確保它也適用於包含換行符的文件名)。請注意,數字排序
-n
假設數字位於文件名的開頭。或者,如果您有
zsh
:cat ./*.sql(.n)
(
n
glob 限定符是為了啟用數字排序(如果數字不在開頭,只要所有文件名都具有相同的前綴(如file12.sql
,file2.sql
),也可以使用。我也添加.
了僅包含正常文件。D
如果您還想要隱藏文件,請添加像.foo.sql
)。