0

我不是 Linux 用户,所以 bash 和 shell 对我来说是新的。我需要一个代码,它为位于我运行代码的文件夹(最好是子文件夹)中的所有文件扩展名“.fal”运行 2 个脚本。

例如:

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 --> 这是当前只运行一次的脚本
  2. (这里是 .fal 文件一个一个)-> 这是输入文件 1
  3. Versuch.txt--> 这是输入文件 2(所有文件相同)(来自同一个文件夹)

最后我想在终端执行以下操作: frdc09927:\Frdc09927\z183464\DOE_Wellen\21a> frdc09927:\Frdc09927\z183464\DOE_Wellen\21a>script.bash --> 输入 frdc09927:\Frdc09927\z183464\DOE_Wellen \21b>script.bash --> 输入 frdc09927:\Frdc09927\z183464\DOE_Wellen\21c>script.bash --> 输入

4

3 回答 3

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

这对当前目录及其子目录中的所有 *.fal 文件运行。用作第一个选项以将-maxdepth 1其限制为仅当前目录,或提供不同的工作目录而不是在其他地方.进行搜索。替换为“找到”文件名,自动尊重文件名中的空格等内容。find{}

我可以find在这一点上开始解释,但你真的应该看一下man find。这个工具非常强大,可以将相当复杂的问题(如处理文件的年龄、文件的所有者等)简化为单行。

于 2013-05-16T06:49:37.163 回答
0

尝试这样的事情:

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

如果 command1 不返回错误代码,则仅对特定文件执行 command2

于 2013-05-16T06:49:26.037 回答
-1

我不确定我是否完全理解这个要求,但是这里(试图遵循你的伪代码):

for FILE in `find . -name "*.fal"`
do   
  eine_fal_macher "${FILE}" Versuch.txt 
done
于 2013-05-16T06:51:19.547 回答