创建一个 .bash 文件来测试循环

创建一个 .bash 文件来测试循环

我正在尝试循环遍历目录中以 .txt 结尾的所有文件并重命名它们(将开头替换为结尾)。但是,我想从这个 for 循环中获取输出并将其传输到 bash 文件,以便我可以检查文件并确保我所写的内容符合我的要求,然后如果我看到的内容符合任务要求,我就可以执行 .bash 文件。我试过了

for file in *.txt ; do mv $file ${file//beginning/end} ; done | rename.bash

但是这会重命名该文件并创建一个空的 rename.bash

答案1

放在echo之前mv。这将打印命令而不是执行它。

还有:

  • 引用变量以避免分词在文件名中的空格上。在这种情况下,您需要将引号放在引号中,因为您要输出到脚本。

  • 我从未见过.bash使用中的扩展,因此我.sh更喜欢使用输出脚本。

  • 您无法直接通过管道连接到文件。请改用输出重定向>。如果您需要使用管道,请使用tee

总共:

for file in *.txt; do
    echo "mv '$file' '${file//beginning/end}'"
done > rename.sh

答案2

因为mv没有输出任何内容,而且您无法将其传输到文件中。

要做的是使用重定向器创建一个 bash 脚本:

for file in *.txt
 do
 echo "mv $file $(some command to manipulate the text)" >> script.bash
done

这会将命令附加到文件。

相关内容