我想在当前目录或子目录中的每个特定类型文件(在本例中为 .txt 文件)的名称前添加文本。
我试过:
find -L . -type f -name "*.txt" -exec mv "{}" "PrependedTextHere{}" \;
问题在于处理 ./
路径中的 ./
部分,该路径随 {}
引用一起出现。
感谢任何帮助或替代方法。
最佳答案
你可以这样做
find -L . -type f -name "*.txt" -exec bash -c 'echo "$0" "${0%/*}/PrependedTextHere${0##*/}"' {} \;
在哪里
bash -c '...'
执行命令$0
是传入的第一个参数,在本例中为{}
-- 完整文件名${0%/*}
删除文件名中最后一个/
及其之后的所有内容${0##*/}
删除文件名中最后一个/
之前的所有内容
关于linux - 递归地将文本添加到文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22740505/