重命名目录中的文件的 Bash 脚本

Mic*_*mes 5 bash scripts

我正在尝试编写一个脚本,该脚本将目录作为命令行参数并遍历目录中的文件,将它们的扩展名更改为.bu.

我认为这会奏效,但我得到了输出 '.bu' is not a target directory

#!/bin/bash

for  f in $1; do
  mv "$f".* .bu
done
Run Code Online (Sandbox Code Playgroud)

May*_*hux 9

#!/bin/bash
cd $1
for f in *; do 
mv  "$f" "${f%.*}.bu"
done
Run Code Online (Sandbox Code Playgroud)


cha*_*aos 5

改为尝试(假设这$1是一个文件夹):

for f in $1/*; do 
  mv "$f" "$f.bu"
done
Run Code Online (Sandbox Code Playgroud)

或者使用重命名实用程序:

rename -v 's/$/\.bu/' $1/*
Run Code Online (Sandbox Code Playgroud)

这些命令添加了扩展名。如果你想改变现有的扩展使用:

rename -v 's/\.[^\.]+$/\.bu/' $1/*
Run Code Online (Sandbox Code Playgroud)

  • 这会附加扩展名,但不会更改它 (2认同)