我有一個資料夾列表,在每個資料夾中都有一個檔案“file.txt”,該檔案在所有資料夾中都具有相同的名稱。我想從所有資料夾中收集該文件的路徑並將其保存在文字檔案中。為此,我在父資料夾中運行了以下命令:
find $PWD -type f -name "file.txt" > paths.txt
該命令將所有資料夾中到該檔案的所有路徑儲存在檔案「path.txt」中,如下所示:
a/b/c/1/file.txt
a/b/c/2/file.txt
a/b/c/3/file.txt
a/b/c/4/file.txt
a/b/c/5/file.txt
a/b/c/6/file.txt
a/b/c/7/file.txt
.
.
.
.
如何在檔案「path.txt」中的行之間建立空格,以便它可以顯示如下:
/a/b/c/1/file.txt /a/b/c/2/file.txt /a/b/c/3/file.txt /a/b/c/4/file.txt /a/b/c/5/file.txt /a/b/c/6/file.txt /a/b/c/7/file.txt ...
答案1
另一種方式,假設 GNU find(1)
,只是為了好玩:
find $PWD -type f -name "file.txt" -printf '%p '
答案2
您可以使用“tr”命令將 LF 字元替換為空格
tr '\012' ' ' < path.txt
這可以是原始命令的一部分:
find $PWD -type f -name "file.txt" | tr '\012' ' ' > paths.txt
答案3
一種簡單的方法是將find
輸出通過管道傳輸xargs
(當沒有給出顯式命令時,其預設操作是回顯其參數)
find $PWD -type f -name "file.txt" | xargs > paths.txt
與簡單地將所有換行符號替換為空格不同,這會保留最終的換行符。
答案4
paste
您也可以使用,
find . -type f -name "path.txt" -exec paste -d' ' -s {} \; > path.txt