2011-12-18 26 views
8

Tôi đang phát triển một launchdaemon đơn giản sao chép tệp từ một thư mục này sang thư mục khác. Tôi đã nhận được các tập tin để chuyển giao tốt hơn.Thay đổi phần mở rộng tệp của nhiều tệp trong một thư mục có thiết bị đầu cuối/bash?

Tôi chỉ muốn các tập tin trong thư mục được của .mp3 thay vì .dat của

Một số các tập tin giống như thế này:

6546785.8786.dat
3678685.9834.dat
4.658.679,4375. dat

Tôi muốn họ trông giống như sau:

6546785.8786.mp3
3678685.9834.mp3
4658679.4375.mp3

Đây là những gì tôi có ở phần cuối của kịch bản bash để đổi tên phần mở rộng tập tin.

cd $mp3_dir 
mv *.dat *.mp3 
exit 0 

Vấn đề là các tập tin đi ra như * .mp3 thay vì 6546785.8786.mp3

và khi một tập tin 6546785.8786.dat được nhập khẩu đến $ mp3_dir, các * .mp3 được ghi đè bằng .mp3 mới

Tôi cần đổi tên chỉ đuôi tệp .dat thành .mp3 và giữ tên tệp.

Ý tưởng? Gợi ý?

Trả lời

27

Hãy thử:

for file in *.dat; do mv "$file" "${file%dat}mp3"; done 

Hoặc, nếu vỏ của bạn có nó:

rename .dat .mp3 *.dat 

Bây giờ, tại sao lệnh của bạn không làm việc: thứ nhất của tất cả, nó là nhiều hơn chắc chắn rằng bạn chỉ đã có một tệp trong thư mục của bạn khi nó được đổi tên thành *.mp3, nếu không mv sẽ không thành công với *.mp3: not a directory.

Và mv KHÔNG thực hiện bất kỳ phép thuật nào với các tệp hình cầu, đó là vỏ mở rộng bóng đèn. Có nghĩa là, nếu bạn có tập tin này trong thư mục:

t.dat 

và bạn gõ:

mv *.dat *.mp3 

vỏ sẽ mở rộng *.dat-t.dat. Tuy nhiên, như không có gì sẽ phù hợp với *.mp3, vỏ sẽ khiến nó như là, có nghĩa là lệnh mở rộng đầy đủ là:

mv t.dat *.mp3 

nào sẽ tạo ra một file có tên, theo nghĩa đen, *.mp3.

Nếu, mặt khác, bạn có nhiều tập tin có tên *.dat, như trong:

t1.dat t2.dat 

lệnh sẽ mở rộng để:

mv t1.dat t2.dat *.mp3 

Nhưng điều này sẽ thất bại: nếu có nhiều hơn hai đối số cho mv, nó dự kiến ​​đối số cuối cùng (ví dụ: *.mp3) là một thư mục.

+0

đó đã làm việc tuyệt vời. Tôi thề tôi nghĩ mình đã tìm kiếm toàn bộ internet để có câu trả lời đúng. Cám ơn rất nhiều. Bây giờ tôi cần tìm ra cách đặt tên .mp3 này thành tên của bài hát một cách tự động. – CokePokes

+0

Không có vấn đề :) Xem thêm chỉnh sửa, có một lệnh đẹp hơn để làm điều đó. Và đừng quên chấp nhận câu trả lời;) – fge

+3

+1. Nếu bạn đặt các biến thành "doublequote", nó cũng sẽ hoạt động với tên tập tin có dấu cách. –

15

Đối với bất kỳ ai trên máy mac, điều này là khá dễ dàng nếu bạn có BREW, nếu bạn không có bia thì lời khuyên của tôi là có được nó. sau đó khi cài đặt chỉ đơn giản là thực hiện điều này

$ brew install rename 

sau đó một lần đổi tên được cài đặt chỉ cần gõ (trong thư mục chứa tập tin)

$ rename -s dat mp3 * 
Các vấn đề liên quan