Linux: Đổi tên nhiều hình ảnh sau thư mục mẹ và thêm hậu tố (lô)


0

Tôi có một thư mục hình ảnh với nhiều thư mục con chứa hình ảnh với, giả sử tên tệp ngẫu nhiên.

images/black-shoe/gsafdfs.jpg
images/black-shoe/ggdfgdf.jpg
images/black-shoe/gdfgd3f.jpg
images/black-shoe/g4twegd.jpg

images/red-shoe/ggsdgdfs.jpg
images/red-shoe/gskjhkhf.jpg
images/red-shoe/gsakytfs.jpg

Và tôi muốn đổi tên hàng loạt tất cả các hình ảnh vào thư mục mẹ của chúng nhưng để ngăn cái này ghi đè lên cái kia, hãy thêm một hậu tố như vậy.

images/black-shoe/black-shoe-1.jpg
images/black-shoe/black-shoe-2.jpg
images/black-shoe/black-shoe-3.jpg
images/black-shoe/black-shoe-4.jpg

images/red-shoe/red-shoe-1.jpg
images/red-shoe/red-shoe-2.jpg
images/red-shoe/red-shoe-3.jpg

Tôi sử dụng Debian 8 và quen với việc sử dụng dòng lệnh. Lý tưởng nhất là tôi muốn tập lệnh nhỏ hoặc oneliner mà tôi có thể thực thi từ bên trong hình ảnh / để áp dụng chúng trên tất cả các thư mục con cùng một lúc.


Xin lưu ý rằng superuser.com không phải là dịch vụ viết mã / mã miễn phí. Nếu bạn cho chúng tôi biết những gì bạn đã cố gắng cho đến nay (bao gồm các tập lệnh / mã bạn đang sử dụng) và nơi bạn bị mắc kẹt thì chúng tôi có thể cố gắng giúp đỡ với các vấn đề cụ thể. Bạn cũng nên đọc Làm thế nào để tôi hỏi một câu hỏi hay? .
DavidPostill

Câu trả lời:


0

Kịch bản ngắn này nên thực hiện thủ thuật (tên tệp và thư mục có thể chứa dấu cách): (nên được gọi với dựa trên tham số)

#!/bin/bash

basedir=$1

while IFS= read -r -d '' path; 
do 
  dirn=$(basename "$path")
  echo "===> $path"
  let i=1
  while IFS= read -r -d '' fname; 
  do
    fext=$(echo "$fname" | awk -F '.' '{print $NF}')
    mv "$fname" "${path}/${dirn}-${i}.${fext}"
    let i=i+1
  done < <(find "$path" -maxdepth 1 -type f -print0)
done < <(find "$basedir" -type d -print0)

Cảm ơn. Điều này có vẻ hiệu quả nhưng nó cũng đổi tên tập lệnh thành '.-1.sh'
johnny538

Ngoài ra, mỗi lần tôi chạy nó, 1 tệp dường như bị xóa.
johnny538

Xin chào, bản thân đoạn script không có ý định nằm trong cấu trúc thư mục nơi các tệp được đổi tên, nó sẽ được lưu trữ ở một nơi khác. Nhưng một số mệnh đề bổ sung có thể được thêm vào để đổi tên các tệp 'jpg' chẳng hạn.
tonioc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.