bash - 附加到目录中的所有文件名

标签 bash shell prepend

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

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

关于bash - 附加到目录中的所有文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52530230/

相关文章:

ruby - Ruby 中的 'include' 和 'prepend' 有什么区别?

javascript - 使用 Angular 将项目添加到列表顶部

list - Kotlin 前置元素

mysql - 在 bash 中从 mysql 获取计数值的最简单方法

linux - 从文件名中删除某些字符

linux - 如何在linux控制台上查看两个对话框?同时运行?

python - 试图让 Anaconda3 在 Mac 上运行

bash - bash脚本中的mvn if语句

bash - 如何编写一个 bash 脚本来递归计算每个文档中的单词数?

macos - .bash_profile 和脚本作为符号链接(symbolic link)