【问题标题】:Renaming multiple files at once一次重命名多个文件
【发布时间】:2019-07-21 19:57:27
【问题描述】:

我有一个大型文件数据集,它们的名称如下:

proportional.rank_9.cycle_10157.ratio_9
proportional.rank_9.cycle_10158.ratio_0
proportional.rank_9.cycle_10159.ratio_130
proportional.rank_9.cycle_10160.ratio_7

当然,事后看来,这将使读取文件变得困难,因为我需要文件名并且每个文件名可能有不同的比例。有没有办法一次重命名所有文件,使 ratio_* 消失?

理想情况下,我希望它们采用这种形式:

proportional.rank_9.cycle_10157
proportional.rank_9.cycle_10158
proportional.rank_9.cycle_10159
proportional.rank_9.cycle_10160

【问题讨论】:

标签: terminal rename filenames file-rename


【解决方案1】:
//set X to all files of the form proportional.rank
X=$(ls proportional.rank*) 

//print out to check X is set
echo $X 

//loop over all files of X
for i in $X ; do
  before_stem=${i%.ratio_*} //what I want to keep
  after_stem=${i#*.ratio_}  //what I don't want
  new_end =$(printf ".out" $after_stem) //give new ending
  mv $i ${before_stem}${new_end} //concatenate the new ending and old beginning
done

%:取 % 之后的模式之前的所有内容

井号:在 # 之后的模式之后取所有内容

printf: 就像 C printf

proportional.rank_9.cycle_10157.ratio_9
proportional.rank_9.cycle_10158.ratio_0
proportional.rank_9.cycle_10159.ratio_130
proportional.rank_9.cycle_10160.ratio_7

变成

proportional.rank_9.cycle_10157.out
proportional.rank_9.cycle_10158.out
proportional.rank_9.cycle_10159.out
proportional.rank_9.cycle_10160.out

【讨论】:

    猜你喜欢
    • 2022-01-26
    • 1970-01-01
    • 2021-08-14
    • 2018-01-19
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多