如何为 Linux 目录中的所有文件运行脚本? [复制]

Posted

技术标签:

【中文标题】如何为 Linux 目录中的所有文件运行脚本? [复制]【英文标题】:How to run a script for all files in Linux directory? [duplicate] 【发布时间】:2019-02-04 10:03:41 【问题描述】:

这里是 Linux 新手,很抱歉这个(简单的?)问题:

我在 Linux 中有一个名为 script_run 的脚本,如果我运行一次并手动指定文件名,它就可以正常工作。该脚本读取输入文件,插入数据,然后将插入的数据保存到输出文件。我希望输出文件具有相同的名称,但添加了“_interp”。我想自动化脚本以运行文件夹目录中的所有文件。我该怎么做呢?我的尝试如下,我在文件夹目录中运行脚本,但无法循环。谢谢您的帮助!

FILEFOLDER=$*

for FILES in $FILEFOLDER
do
script_run "
[--input $FILES]
[WriterStd --output tmp_output_$FILES.txt]"

cat tmp_output_$FILES.txt >> output_$FILES_interp.txt
done

【问题讨论】:

How to iterate over files in a directory with Bash?、Bash script to execute command on all files in a directory、How to do something to every file in a directory using bash?、for loop over specific files in a directory using Bash 等可能重复 另见How to use Shellcheck、How to debug a bash script?(U&L.SE)、How to debug a bash script?(SO)、How to debug bash script?(AskU)、Debugging Bash scripts等 抱歉,我觉得这些答案没有解决我的文件路径/目录命名问题 【参考方案1】:
#!/bin/bash

FILES=`ls *.*`
for FILE in $FILES
do
    script_run "[--input $FILE] [WriterStd --output tmp_output_$FILE.txt]"
    cat tmp_output_$FILE.txt >> output_$FILE_interp.txt
done

顺便说一句,这个奇怪的注释 [--input $FILE] 是怎么回事?您的脚本是否明确需要这样的格式?

【讨论】:

谢谢,成功了。 --input 注释是 script_run 包的一部分,它明确要求格式化。

以上是关于如何为 Linux 目录中的所有文件运行脚本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何为子目录中的 C# 文件编写 DependentUpon 子句?

如何为配置脚本指定包含目录

如何为指定的 Matlab 运行时 (MCR) 编译 Matlab 脚本

如何为windows所有连接使用pac文件进行代理

Go:如何为多个包运行测试?

Spring Boot - 如何为指定根目录中的多个路由提供一个静态 html 文件