写在这里以防自己以后忘了还到处搜
这里使用awk来处理,先说一下awk的用法
awk -F [分隔符,默认空格] '{print $1blabla$2blabla}'
awk将文件按\n分行处理,每一行把[]中的内容当做分隔符(这里[]不是真正要输入命令行的)
例如,文件名 xH_nohalos_z006.00_nf0.002462_eff40.0_effPLindex0.0_HIIfilter1_Mmin8.4e+08_RHIImax20_256_300Mpc
就是通过把‘_'当做分隔符,划分成一段一段的。
后半部分'{}'是操作命令,例如在用于修改文件名的情况下,就是print "mv "$0" "$1blabla
至于修改文件名,通过|来连接不同命令的输入输出
ls xH* | awk -F '_' '{print "mv "$0" "$1"_"$2"_"$3"_"$9"_"10}'|bash
就是将第一步挑选出来以xH开头的文件名作为第二个awk命令的输入,然后打印出 mv filename_old filename_new 格式的命令,交由bash执行