bash - 附加到目录中的所有文件名
问题描述
目标是使用其路径将文本添加到特定目录中的每个文件名。我不希望这仅适用于当前目录,但无论您在文件树中的哪个位置都可以使用。这就是我所拥有的:
for f in `ls path/*`
do
mv "&f" "x$f"
done
它没有将其移动到具有新文件名且前面带有 x 的相同路径,而是尝试将其移动到 x/path (这显然会产生错误),而且我似乎找不到任何关于如何获取 x就在文件名的前面,以有效地用前面的 x 重命名文件。
解决方案
您可以同时依赖basename
和dirname
命令:
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
在文件名前添加一个。
推荐阅读
- asp.net - 如何检查电子邮件是否存在或发现它已被退回?
- matlab - 使用 Matlab 从 csv 文件导入数据
- ruby - Ruby ocra LoadError 异常 - 网络/ssh
- css - 增加全局字体大小 CSS
- apache-kafka - Kafka Streams 状态存储恢复/恢复时间
- pdf - 创建像 getepic 这样的翻书
- javascript - 未捕获的 SyntaxError:JS 和 CSS 文件中的非法字符 U+001F
- c# - 指定列表中的最大项目数
? - c++ - 如何将 msbuild 中的内联汇编转换为 gcc
- xamarin.forms - 是否可以在 OneSignal 中使用具有不同外部用户 ID 的一个玩家 ID