我有一個腳本只能將數據寫入stdout
。我需要運行它爲多個文件,併爲每個輸入文件生成不同的輸出文件,我想知道如何使用find -exec
。所以我基本上嘗試的這幾款變種(我更換了劇本由cat
只是測試性的目的):使用find -exec重定向stdout並且不創建新的shell
找到*型的F -exec貓 「{}」> 「{} .stdout」 \;
但由於所有的數據都被寫入一個字面上名爲{}.stdout
的文件,所以無法工作。
最後,我可以把它一起工作:
發現*型的F -exec SH -c 「貓{}> {} .stdout」 \;
不過,雖然這種最新形式與cat
效果很好,我的腳本需要通過幾個初始化腳本加載環境變量,因此,我結束了:
發現*型的F -exec SH -c「 initscript1; initscript2; ...; myscript {}> {} .stdout「\;
這似乎是一種浪費,因爲我已經在我的當前shell中初始化了一切。
有沒有更好的方法來做到這一點find
?其他單線也歡迎。
如果它們在原始shell中初始化,但未在子shell中設置,則它們不是環境變量。在你的腳本的頂部寫上'set -a'。 – 2013-02-22 18:23:25
你給出的最後一個例子是正確的還是命令:'find。 -type f -exec sh -c「。initscript1;。initscript2; ...; myscript {}> {} .stdout」\; '(而不是簡單地調用'initscript1',你實際上是否在調用'.initscript1',即你正在使用點命令來源文件)。 – 2013-02-22 18:30:11