放在目录中的所有文件名之前

时间:2018-09-27 05:49:43

标签: bash shell prepend

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

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

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

1 个答案:

答案 0 :(得分:1)

您可以同时使用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