我正在尝试编写一个脚本,该脚本将目录作为命令行参数并遍历目录中的文件,将它们的扩展名更改为.bu
.
我认为这会起作用,但我得到了输出'.bu' is not a target directory
#!/bin/bash
for f in $1; do
mv "$f".* .bu
done
我正在尝试编写一个脚本,该脚本将目录作为命令行参数并遍历目录中的文件,将它们的扩展名更改为.bu
.
我认为这会起作用,但我得到了输出'.bu' is not a target directory
#!/bin/bash
for f in $1; do
mv "$f".* .bu
done
试试看(假设这
$1
是一个文件夹):或者使用重命名实用程序:
这些命令添加了一个扩展名。如果要更改现有扩展名,请使用:
采用 KISS 方法,我会推荐以下脚本
这会将工作目录更改为第一个参数,然后
.bu
为所有文件添加扩展名。这消除了 for 循环的需要。编辑:
如果你想更改扩展名(而不是仅仅添加它),你可以尝试
命令代替,在上面的脚本中。
$1
在bash
脚本中是对从命令行传递的第一个参数的引用,因此您实际上是在尝试处理单个文件夹。已经有关于如何使用 pure 解决您的问题的答案
bash
,但我想补充一点,如果您需要更好地过滤正在处理的内容,您可以使用find
一些选项来选择要处理的文件:*<path_to_directory> = 目录路径
stdin
然后使用重定向遍历文件列表: