前置到目录中的所有文件名

Prepend to all filenames in a directory

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

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

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

您可以依赖 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