我要求我修改目录中包含的所有文件的文件扩展名: -
文件就像;
America.gz:2170
Europe.gz:2172
Africa.gz:2170
Asia.gz:2172
我需要的是修剪所有文件中的:2170和:2172,以便只保留.gz扩展名。
我知道在下面的SED代码的帮助下,文件中的所有条目都可能存在,但我需要目录中的所有文件: -
**sed 's/:.*//' file**
任何用于解决此问题的bash或awk代码都将受到高度赞赏。
提前致谢。
答案 0 :(得分:4)
您可以在bash
:
shopt -s nullglob
for f in *.gz:*; do
mv -- "$f" "${f%:*}"
done
"${f%:*}"
将删除变量:
$f
之后的所有内容
答案 1 :(得分:1)
您可以使用重命名命令。
rename 's/:.*//' *.gz:*
或
rename 's/:[^:]*$//' *.gz:*
答案 2 :(得分:0)
可以使用for
循环和子字符串处理运算符'%'完成整个作业:
“$ {parameter%word}删除最小的后缀模式。”
#!/bin/sh
for i in *
do #mv "$i" "${i%:}"
echo " mv $i ${i%:*}"
done