在整个目录和子目录中递归地重命名文件名的一部分
Rename a portion of a filename recursively throughout directory and sub directory
如何让这个命令在整个子目录中都执行?
for filename in *foo*; do mv "$filename" "${filename//foo/bar}"; done
可能您只想重命名文件名(最后一个路径名部分),而不是中间子目录名。然后可以使用 bash.
的 globstar
功能来完成此任务
#!/bin/bash
shopt -s globstar
for pathname in ./**/*foo*; do
[[ -f $pathname ]] || continue
basename=${pathname##*/}
mv "$pathname" "${pathname%/*}/${basename//foo/bar}"
done
如何让这个命令在整个子目录中都执行?
for filename in *foo*; do mv "$filename" "${filename//foo/bar}"; done
可能您只想重命名文件名(最后一个路径名部分),而不是中间子目录名。然后可以使用 bash.
的globstar
功能来完成此任务
#!/bin/bash
shopt -s globstar
for pathname in ./**/*foo*; do
[[ -f $pathname ]] || continue
basename=${pathname##*/}
mv "$pathname" "${pathname%/*}/${basename//foo/bar}"
done