簡體   English   中英

當輸出到文件時,ls 的結果在一行中

[英]results of ls in one line when the output goes to a file

ls 在連接到標准輸出時在一行中返回文件。

$ ls
a b c

當它重定向到一個文件時

$ ls > foo.txt
$ cat foo.txt
a
b
c

我意識到選項-C

$ ls -C > hoge.txt
$ cat hoge.txt
a b c

但是,當文件列表有很多時, ls將回車放在列表中。 喜歡

 a b c d e f g h
 i j k l ....

我怎么會有

 a b c d e f g h i j k l.....(without \n)

我不知道ls是否為此提供了一個選項,我還沒有查過。 由於這個問題並沒有特別要求一個非常快速或計算效率高的解決方案,我建議使用lssed合成一個命令:

ls "$dir" | sed -z 's/\n/ /g'

它接受ls輸出並用空格替換所有換行符\\n -z開關是必需的,因為否則sed將面向行工作,並且sed的模式匹配器永遠不會看到\\n 如果$dir中的文件名之一包含空格,則會出現問題。

如果計算效率是一個問題,我建議搜索這樣的選項 ( man ls ) 或編寫一個程序來做到這一點(例如,使用C語言)。

嘗試以下解決方案,

echo -E $(ls -1 dir) > file.txt

在哪里

-1 在單列中打印 o/p

-E 禁用反斜杠轉義的解釋

來源:這個服務器故障頁面

這將解決問題:

ls | xargs > foo.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM