Bash

如何對帶有空格的文件名進行排序並連接文件?

  • April 19, 2016

我很不幸處理包含空格的文件名。我想連接文件名包含空格的文件。我還想對文件名進行數字排序。顯然以下失敗:

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)

nglob 限定符是為了啟用數字排序(如果數字不在開頭,只要所有文件名都具有相同的前綴(如file12.sql, file2.sql),也可以使用。我也添加.了僅包含正常文件。D如果您還想要隱藏文件,請添加像.foo.sql)。

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