我有数千个名为 filename.gz.gz.gz.gz.gz.gz.gz.gz.gz.gz.gz 的文件
我正在使用这样的 find 命令find . -name "*.gz*"
找到这些文件并使用-exec
或者通过管道连接到 xargs 并使用一些神奇的命令来清理这个混乱,这样我最终会得到 filename.gz
有人请帮我想出这个神奇的命令来删除不需要的实例.gz
。我曾尝试过尝试sed 's/\.gz//'
and sed 's/(\.gz)//'
但它们似乎不起作用(或者更诚实地说,我对 sed 不是很熟悉)。顺便说一句,我不必使用 sed,任何有助于解决此问题的解决方案都将受到欢迎:-)
find 和 awk 的一种方法:
find $(pwd) -name '*.gz'|awk '{n=$0;sub(/(\.gz)+$/,".gz",n);print "mv",$0,n}'|sh
Note:
- 我假设您的文件名中没有特殊字符(例如空格...)。如果有,您需要在 mv 命令中引用文件名。
- 我添加了一个
$(pwd)
获取找到的名称的绝对路径。
- 你可以删除结尾
|sh
检查生成的mv ... ....
cmd,如果正确的话。
- 如果一切看起来都不错,请添加
|sh
执行mv
请参阅此处的示例:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)