我有一个目录,其中包含许多名称如下的文件:* _ * _ *** number (possibly)v2_ * 。* . * _1
我想删除除“number”和“_v2”(如果有的话)之外的所有内容,最好使用“cut”或类似的命令,因为我对 bash shell 脚本有些熟悉,但不熟悉 awk,例如
我尝试过使用各种剪切命令,例如:要删除前三个字段 + 分隔符“_”,我使用了这个:
for file in FIRSTSTRING_SECONDSTRING_THIRDSTRING_*; do echo mv $file $(echo $file | cut -c 26-); done
然后我想去掉最后两个字段。但我不知道该怎么做。
当然,如果所有文件名中间都有“数字”,那么我可以像这样去掉最后的字段:
for file in *_1; do echo mv $file $(echo $file | cut -d "_" -f 1); done
或者如果所有人都有“_number_v2_”,就这样:
for file in *_1; do echo mv $file $(echo $file | cut -d "_" -f 1,2); done
但是由于有两种文件名,我不知道该怎么做。我可以使用“rev”并删除前两个字段,然后再次使用“rev”,但 cut 不会删除,它会选择。是否有删除而不是选择的命令?