提取tar.gz文件时如何替换文件名中的冒号以适配NTFS文件系统?
解决tar提取时批量替换文件名中所有冒号的问题
你之前的--transform参数只替换了第一个冒号,是因为sed替换规则默认只处理第一个匹配项,加上g标记就能全局替换所有冒号。
直接使用以下命令提取并替换所有文件名中的冒号:
tar --transform='s/:/-/g' -xzvf /media/joshua/output/Example.tar.gz -C /media/joshua/elements/
参数说明
--transform='s/:/-/g':通过sed规则将文件名里所有冒号(:)替换为减号(-),g是全局替换标记-xzvf:x表示提取文件,z处理gzip压缩,v显示提取过程,f指定要操作的tar.gz文件-C:指定提取后文件的存放目录(你的NTFS存储路径)
批量处理70多份tar.gz文件
如果要一次性处理所有文件,用bash循环即可:
for tar_file in /media/joshua/output/*.tar.gz; do tar --transform='s/:/-/g' -xzvf "$tar_file" -C /media/joshua/elements/ done
这个循环会自动遍历/media/joshua/output/下所有.tar.gz文件,逐个提取并替换文件名。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

