Linux

如何創建帶有腳本路徑和目錄名稱的文本文件?

  • August 4, 2021

我有一個名為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而不是shas%q可以使用某種形式的特定於zsh.

另一種選擇是使用qq參數擴展標誌,該標誌始終使用單引號進行引用,這是最便攜和最安全的引用運算符

() {
 printf '/data/testing.sh %s sample\n' ${(qq)@}
} data/samples/*(/:t) > file.txt

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