Linux
如何創建帶有腳本路徑和目錄名稱的文本文件?
我有一個名為
data
. 裡面data
有一個目錄,裡面samples
有50多個目錄,裡面有一個shelltesting.sh
腳本data
。設置如下所示:data |___ samples |______ PREC001 |______ PREC003 |______ PREC023 |______ KRES118 |______ TWED054 . . . |______ PREC098 |___ testing.sh
我想創建一個文件,其中包含所有目錄
.txt
的路徑以及目錄名稱。我正在研究Linux。testing.sh``samples
創建的
.txt
文件應如下所示:/data/testing.sh PREC001 samples /data/testing.sh PREC003 samples /data/testing.sh PREC023 samples /data/testing.sh KRES118 samples /data/testing.sh TWED054 samples . . . /data/testing.sh PREC098 samples
如何在linux中做到這一點。我實際上嘗試了一些基本命令,但我無法得到我想要的。謝謝你。
這應該只是一個問題:
(cd data/samples && printf '/data/testing.sh %s sample\n' *) > file.txt
或僅限於目錄類型的文件*,*使用
zsh
:printf '/data/testing.sh %s sample\n' data/samples/*(/:t) > file.txt
file.txt
請注意,如果找不到匹配的文件,它還具有報告錯誤和不破壞的優點。替換
(/:t)
為(-/:t)
還包括最終解析為目錄類型文件的符號連結類型的**文件。如果這是為了生成
sh
稍後解釋的 shell 程式碼,您還需要確保正確引用文件的名稱。您可以替換%s
為%q
,但隨後您需要確保腳本被解釋為,zsh
而不是sh
as%q
可以使用某種形式的特定於zsh
.另一種選擇是使用
() { printf '/data/testing.sh %s sample\n' ${(qq)@} } data/samples/*(/:t) > file.txt