đổi tên danh sách các tập tin theo một tập tin văn bản


8

Tôi có một danh sách các tập tin trong một thư mục mà tôi muốn đổi tên theo một tệp văn bản. Ví dụ:

Đây là 5 tập tin trong thư mục.

101_T1.nii
107_T1.nii 
109_T1.nii
118_T1.nii
120_T1.nii

Tôi muốn đổi tên chúng bằng tệp văn bản chứa danh sách tên tệp mới theo cùng thứ tự, không có phần mở rộng .nii:

n01
n02
n03
n04
n05

Làm thế nào tôi có thể đi về làm như vậy?


3
ls | paste - /the/text/file | xargs -n2 mv
Stéphane Chazelas

Câu trả lời:


9

một lớp lót, lệnh này đọc txt 'list' và phân tích cú pháp cho mỗi dòng một tệp.

for file in *.nii; do read line;  mv -v "${file}" "${line}";  done < list

3

Bạn có thể làm:

paste OLD NEW|while read OLD NEW;do mv ${OLD} ${NEW};done

... Trong đó tệp có tên "OLD" chứa tên tệp cũ và tệp có tên "MỚI" có tên trùng khớp (1: 1) mới.


0

Nếu shell của bạn hỗ trợ thay thế quá trình, hãy thử:

paste -d' ' <(ls *.nii) /path/to/textfile | xargs -n2 mv

hoặc bạn có thể làm điều đó POSIXly:

ls *.nii | paste -d' ' - /path/to/textfile | xargs -n2 mv
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.