对于ls(list命令)输出,为目录中的所有文件添加前缀文件名

时间:2018-02-23 13:08:17

标签: bash shell

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

我希望所有文件的前缀为001,002,..... 050,如编号顺序

但我希望这些文件位于File created Order

ls -c按创建的顺序列出文件 enter image description here

前缀应采用以下方式

  • 001_添加方法......
  • 002改变我们的应用......

我试过了

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

echo i正在打印好的文件名。但我想以这种格式001,002,003,.....

为自动生成的数字加前缀

2 个答案:

答案 0 :(得分:0)

尝试使用循环,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标志可以防止自动覆盖现有文件。

答案 1 :(得分:0)

尝试使用当前目录:

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 mv命令