我想保留这些文件但删除它们的扩展名。这些文件的扩展名不同。我的最终目标是删除它们的所有扩展并将它们更改为我选择的一个扩展。我已经把第二部分写下来了
到目前为止我的代码:
#!/bin/bash
echo -n "Enter the directory: "
read path
#Remove all extensions
find $path -type f -exec mv '{}' '{}'.extension \; #add desired extension
您不需要外部命令find
为此,但要这样做bash
独自的。下面的脚本从文件夹中的所有文件中删除扩展名path
.
for file in "$path"/*; do
[ -f "$file" ] || continue
mv "$file" "${file%.*}"
done
使用理由[ -f "$file" ]
仅用于安全检查。 glob 表达式 "$path"/* 可能最终不会列出任何文件,在这种情况下mv
由于没有文件,命令将失败。这[ -f "$file" ] || continue
条件通过退出循环来保护这一点$file
变量为空,其中[ -f "$file" ]
返回失败错误代码。这||
当在复合语句中使用时,如果前一个命令失败就会运行,所以当continue
接下来,for 循环被终止。
如果您想添加新扩展,只需执行以下操作
mv "$file" "${file%.*}.extension"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)