从当前目录中的文件列表中删除最后10个字符

时间:2018-01-17 12:54:49

标签: bash sed

我当前目录中有大约255个文件。其中一些列表是

ALLT042194_TAB20.tsv_20180117_001434_0084
ALLT194_TAB20.tsv_20180117_0083
ALLT194_TAB20.tsv_20180117_0084
ALLT194_TAB20.tsv_20180117_0089
ALLT194_TAB20.tsv_20180117_0085
ALLT194_TAB20.tsv_20180117_0082
ALLT194_TAB20.tsv_20180117_0060
ALLT194_TAB20.tsv_20180117_0044
ALLT194_TAB20.tsv_20180117_0064
ALLT194_TAB20.tsv_20180117_0094

我想删除.tsv之后的所有字符。为此,我使用了以下代码。在代码中,我删除了最后14个字符,因此我通过.tsv获取文件名。但我的代码只提供了15个文件的输出,并从255中删除了其余的文件。

for i in *
do
  j=`echo $i | sed -e 's/..............$//'`
  mv $i $j
done

如何删除.tsv后的所有内容?

1 个答案:

答案 0 :(得分:0)

这是一个正确引用的版本:

for original_filename in *; do
  mv "$original_filename" "${original_filename%.tsv*}.tsv"
done

N.B:正如@tripleee指出的那样,你会通过这样做来覆盖大多数文件。