如何让sed处理文件名而非文件内容?实现文件名字符串替换
解决方案
要让sed处理文件名而非文件内容,核心是把文件名作为sed的输入文本,而非让sed去读取文件内容。以下是几种可行命令:
方法1:结合basename提取纯文件名后替换
find . -type f -print0 | xargs -0 basename | sed 's/file//g'
basename会去除文件名的路径前缀(将./filename.txt转为filename.txt)- 后续sed将字符串中的
file替换为空,最终输出name.txt
方法2:用find内置格式化输出直接获取纯文件名
find . -type f -printf "%f\n" | sed 's/file//g'
find的%f格式化选项会直接输出不带路径的文件名- 再通过sed完成替换操作,得到目标结果
如果需要保留路径(比如输出./name.txt),可以去掉basename改用以下命令:
find . -type f -print0 | xargs -0 echo | sed 's/file//g'
内容的提问来源于stack exchange,提问作者goweon
相关产品推荐
相关产品推荐

