Linux
為什麼我的命令輸出中有空行?:find ~/x/y/ |shuf > ~/Desktop/z.txt
事實證明,這個問題的原因是一個文件名帶有幾個換行符。(不知道那是怎麼發生的。)
find ~/x/y/ | shuf > ~/Desktop/z.txt
除了“z.txt”文件中出現一些空行之外,此命令幾乎可以正常工作。這很不方便,因為下一步是選擇最上面的文件並打開它,空行顯然沒有用。我很好奇為什麼會發生這種情況,以及是否有一些“標準”解決方案(某個選項?),或者,一些強大而簡單的解決方案(刪除空行的額外命令?)。
shuf
不添加空行,因此它們必須來自find
. 這表明在該目錄中的某處存在名稱包含兩個連續換行符的文件。您可以使用命令查看它們是什麼find ~/x/y/ -name '* *' -print -exec echo '========'
或者
find ~/x/y/ -name '* *' -exec ls -q
要使用命令處理包含換行符的文件名
shuf
,請使用空字節作為分隔符。find ~/x/y/ -print0 | shuf -z
我不確定為什麼輸出文件中會出現空行,但您可以在寫入文件之前嘗試過濾掉空行。
find ~/x/y/ | shuf | grep -v '^$' > ~/Desktop/z.txt
為了追踪空白行的來源,請嘗試
find
自行執行。find ~/x/y/ > ~/Desktop/z.txt
中是否出現空行
z.txt
?如果是這樣,它們很可能是由find
.您可以使用以零結尾的項目代替以換行符結尾的項目。當您從列表中選擇第一項時,只需使用從第一個字元到第一個空字元的文本。
find ~/x/y/ -print0 | shuf -z > ~/Desktop/z.txt