2013-05-16 42 views
0

我不是Linux用戶,所以bash和shell對我來說是新的。 我需要運行2個腳本所有文件擴展名「.fal」,它們位於的文件夾中(和子文件夾優選地)一個代碼,我運行在代碼BASH Linux爲所有文件擴展名運行代碼「.fal」

例如:

dos2unixfortxtandfal """""""that code runs for all files in the folder already 
and 
for all ".fal" files in this folder, 
Do 

eine_fal_macher (here the .fal files 1 by one) Versuch.txt 
Done 
  1. eine_fal_marcher - >這是在當下(由一個這裏的.fal文件1)只運行一次
  2. 腳本 - >這是輸入文件1
  3. Versuch.txt - >此是輸入文件2(全部相同)(來自相同 文件夾)

在我想要做在終端下面末尾: frdc09927:\ Frdc09927 \ z183464 \ DOE_Wellen \ 21A> frdc09927:\ Frdc09927 \ z183464 \ DOE_Wellen \ 21A>腳本。的bash - >輸入 frdc09927:\ frdc09927 \ z183464 \ DOE_Wellen \ 21B> script.bash - >輸入 frdc09927:\ frdc09927 \ z183464 \ DOE_Wellen \ 21C> script.bash - >輸入

回答

2
find . -name \*.fal -exec eine_fal_macher {} Versuch.txt \; 

這將運行所有* .fal文件。使用-maxdepth 1作爲第一個選項,將其限制爲僅限當前目錄,或者提供與.不同的工作目錄,以在其他地方搜索find{}被替換爲「found」文件名,自動遵守文件名中的空格。

我現在可以在這一點開始解釋find,但你應該真的而不是看看man find。這個工具非常強大,並且可以將相當複雜的問題(比如在文件時代,他們的所有者等等上)減少到單線程。

0

嘗試像這樣:

for i in `ls *.fal`; do command1 $i && command2 $i; done 

命令2只對特定文件執行在command1不會在當前目錄及其子目錄返回錯誤代碼

+0

爲失敗在他們空格的文件名。 – DevSolar

+0

正如前面所說的那樣,對於帶有空格的文件將會失敗,並且'ls'是不必要的:shell將擴展'* .fal' – Matteo

-1

我不知道我完全理解的要求,但在這裏不用(試圖按照你的僞代碼):

for FILE in `find . -name "*.fal"` 
do 
    eine_fal_macher "${FILE}" Versuch.txt 
done 
+1

對於其中包含空格的文件名失敗。 (對不起。;-)) – DevSolar

+0

好點 - 這是早期:) ..附加文件周圍的文件 – FreudianSlip

+0

似乎工作好我的箱子(現在我已經解僱了) – FreudianSlip

相關問題