將目錄中每對文件的結果寫入文件

將目錄中每對文件的結果寫入文件

我想對目錄中的每對文件執行命令並將結果寫入文件,我想獲得結果的矩陣 NxN。我已經開始了:

for file1 in some_directory/*.txt; 
do 
    filename1=$(basename "$file1")
    for file2 in some_directory/*.txt; 
    do 
        //here python script should be run 
        python script.py file1 file2
        //and result should be written to file, seperate by space
    done
    //here should be new line
done

不幸的是,我不懂bash。有人可以幫我完成嗎?先感謝您

答案1

試試這個:

#!/bin/bash --
(cd some_directory ;\
 for file1 in *.txt ; do
   for file2 in *.txt ; do
#    here python script should be run
     printf "%s " "$(python /path/to/script.py "${file1}" "${file2}")"
   done
   printf "\n"
 done ) > result.file

筆記:/path/to/script.py必須替換為script.py腳本的完整路徑名。

整個區塊包含在 中(...)。裡面的所有指令都在子 shell 中執行。這用於分組和捕獲它們的輸出,並使所有命令在 中執行some_directory,這要歸功於第一行 withcd命令。

"${file1}""${file2}"用於安全地引用這些變數的值。

"$( ... )"正在執行內部命令,並透過雙引號將輸出分組到單一字串中。

printf "%s " "$( ... )"列印腳本的結果python並新增一個空格。

printf "\n"列印一個新行。

> result.file將子 shell 內所有指令產生的所有輸出重新導向到result.file目前目錄中指定的檔案。

它已經用奇怪的文件名進行了測試,看起來很安全。

相關內容