簡體   English   中英

重命名文件夾中的所有文件

[英]Rename all files in a folder

我在Linux上,並下載了很多有趣的圖片。 不幸的是,我留下了一堆重復的名字,如download (1)image.jpeg 我想將它們全部更改為更有用的內容。

有沒有一種方法(最好使用bash)將所有文件重命名為帶有前導零的連續4位數字?

例如:

0001
0002
0003
0004
....

上一個答案中提供的代碼段是一種很好的實現方式,但是輸入錯誤或外殼不兼容可能會導致其無法正常運行。

請改為嘗試以下代碼。 它執行相同的操作,但是每個快捷方式都已在循環中使用調試echo命令顯式編寫。

counter=1
cd /my/image/directory
for f in $(ls -1)
do
  new_filename=$(printf "%04d" ${counter})     
  echo "renaming ${f} ..to.. ${new_filename}"
  mv ${f} ${new_filename}
  (( counter=${counter}+1 ))
done

屏幕輸出將有些混亂。 如果文件太多,則可能需要添加| tee screen.out 使用done命令將| tee screen.out到行尾。 這樣您就可以返回並查看screen.out中記錄的哪個文件發生了什么。

我創建了自己的工具來執行此操作 它還維護文件擴展名,我沒有提到,但可能應該包括在內。 這是代碼:

#!/bin/sh

dir=$1
cd $dir
echo "Renaming all files in $dir."
COUNTER=1
for i in `ls -1`
do
  extension=${i##*.}
  mv "$i" "$COUNTER.$extension"
  echo "$i ==> $COUNTER.$extension"
  COUNTER=$(expr $COUNTER + 1 )
done

(在撰寫本文時)它不包括前導零,但可以完成工作。

只要您不在乎哪個文件都重命名為什么,就很容易:)

counter=1
for f in *; do
    mv "$f" "$( printf "%04d" $((counter++)) )"
done

嘗試使用后綴.bash將所有文件重命名為文件夾中的后綴.sh很容易完成

rename .bash .sh *.bash

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM