bash - 对文件夹 bash 中以字符串开头的所有文件名调用脚本

标签 bash

我有一组文件,我想在我希望为其编写脚本的文件夹中执行操作。每个文件都以 mazeFilex 开头,其中 x 可以是任意数字,是否有一种快速简便的方法来对每个文件执行操作?例如我会做

cat mazeFile0.txt | ./maze_ppm 5 |转换 - maze0.jpg

在知道文件始终以 mazeFile 开头的情况下如何选择每个文件?

最佳答案

for fname in mazeFile*
do
    base=${fname%.txt}
    base=${base#mazeFile}
    ./maze_ppm 5 <"$fname" | convert - "maze${base}.jpg"
done

注意事项

  • for fname in mazeFile*; do

    这段代码开始循环。以这种方式编写,对于所有文件名都是安全的,无论它们的名称中是否包含空格、制表符或其他任何内容。

  • base=${fname%.txt}; base=${base#mazeFile}

    这会删除 mazeFile前缀和 .txt仅保留我们将用于输出文件的基本名称的后缀。

  • ./maze_ppm 5 <"$fname" | convert - "maze${base}.jpg"

    输出文件名是使用 base 构建的.还要注意 cat是不必要的,已在此处删除。

关于bash - 对文件夹 bash 中以字符串开头的所有文件名调用脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26812585/

相关文章:

linux - Sed 完全匹配

bash - Shell 脚本 "|| { }"可读替代

linux - 用于验证Linux上make版本的Shell脚本

bash - 什么是首选 Bash shebang ("#!")?

linux - 空格导致命令无法完成

linux - 为什么 `stack --version` 显示的版本与安装的版本不同?

linux - 当操作系统等待用户输入时,CPU 是否仍在执行任何指令?

无法在 C 中使用 system() 函数执行 "cat"

json - 使用jq根据对象中变量的值选择对象

linux - 在 bash 中查找文件失败