首页 > 解决方案 > 附加到目录中的所有文件名

问题描述

目标是使用其路径将文本添加到特定目录中的每个文件名。我不希望这仅适用于当前目录,但无论您在文件树中的哪个位置都可以使用。这就是我所拥有的:

for f in `ls path/*`
do 
    mv "&f" "x$f"
done

它没有将其移动到具有新文件名且前面带有 x 的相同路径,而是尝试将其移动到 x/path (这显然会产生错误),而且我似乎找不到任何关于如何获取 x就在文件名的前面,以有效地用前面的 x 重命名文件。

标签: bashshellprepend

解决方案


您可以同时依赖basenamedirname命令:

 for i in path/*; do 
   mv "$i" "$(dirname "$i")/x$(basename "$i")"
 done

或者使用 bash 参数扩展:

for i in path/*; do 
  mv "$i" "${i%/*}/x${i##*/}"
done

两个命令都x在文件名前添加一个。


推荐阅读