【问题标题】:Prefix filename in for all the files in directory for ls (list command) outputls(list 命令)输出目录中所有文件的前缀文件名
【发布时间】:2018-02-23 23:27:18
【问题描述】:

我已经将一些文件下载到一个目录中。

我想像编号顺序一样为所有文件加上 001、002、.....050 前缀

但我希望文件在文件创建顺序中

ls -c 按创建顺序列出文件

前缀应采用以下方式

  • 001_添加方法......
  • 002_破解我们的应用程序......

我试过了

for i in "$(ls -c)";
  do
   echo i;
done;

echo i 正在打印可以的文件名。但我想以这种格式为自动生成的号码添加前缀 001,002,003,.....

【问题讨论】:

  • 文字不要用图片。

标签: bash shell


【解决方案1】:

对当前目录试试这个:

c=0
find . -maxdepth 1 -type f -printf '%A@ %f\n' |
sort -n -k1 |
while IFS= read -r line; do
    echo mv "${line#* }" "$(printf '%03d_%s\n' $((++c)) "${line#* }")"
done

don't parse ls output

注意:当您的测试正常时,删除 echo for mv 命令

【讨论】:

    【解决方案2】:

    尝试使用循环、let 和 printf 进行填充:

    a=1
    for i in *; do
      new=$(printf "%03d" "$a") #03 pad to length of 3
      mv -i -- "$i" "$new$i"
      let a=a+1
    done
    

    使用 -i 标志可防止自动覆盖现有文件。

    【讨论】:

    • OP 询问按创建日期排序的文件
    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 2012-11-23
    • 2015-01-08
    • 2014-04-15
    • 1970-01-01
    • 2010-09-29
    相关资源
    最近更新 更多