我想在特定类型的每个文件的名称前添加文本 - 在本例中为 .txt 文件 - 位于当前目录或子目录中。
我试过了:
find -L . -type f -name "*.txt" -exec mv "{}" "PrependedTextHere{}" \;
Run Code Online (Sandbox Code Playgroud)
问题在于处理引用./附带的路径部分{}。
任何帮助或替代方法表示赞赏。
你可以做这样的事情
find -L . -type f -name "*.txt" -exec bash -c 'echo "$0" "${0%/*}/PrependedTextHere${0##*/}"' {} \;
Run Code Online (Sandbox Code Playgroud)
在哪里
bash -c '...' 执行命令$0是传入的第一个参数,在这种情况下{}- 完整文件名${0%/*}删除/文件名中包括最后一个之后的所有内容${0##*/}删除/文件名之前的所有内容,包括文件名中的最后一个