Jas*_*eet 3 linux bash shell sh
我想保留文件但删除其扩展名.这些文件没有相同的扩展名.我的最终目标是删除所有扩展并将其更改为我选择的一个扩展.我把第二部分放下了.
我的代码到目前为止:
#!/bin/bash
echo -n "Enter the directory: "
read path
#Remove all extensions
find $path -type f -exec mv '{}' '{}'.extension \; #add desired extension
Run Code Online (Sandbox Code Playgroud)
您不需要外部命令find,但bash单独执行此操作.下面的脚本从文件夹中的所有文件中删除扩展名path.
for file in "$path"/*; do
[ -f "$file" ] || continue
mv "$file" "${file%.*}"
done
Run Code Online (Sandbox Code Playgroud)
使用的原因[ -f "$file" ]仅用于安全检查.glob表达式"$ path"/*可能最终没有列出任何文件,在这种情况下mv命令会因为没有文件而失败.[ -f "$file" ] || continue当$file变量为空时,该条件通过退出循环来保护它,其中[ -f "$file" ]返回失败错误代码.该||化合物中的语句中使用时,如果前一个命令失败运行,所以当continue未来被击中,for循环被终止.
如果你想添加一个新的扩展名就行了
mv "$file" "${file%.*}.extension"
Run Code Online (Sandbox Code Playgroud)