rename
là hơi nguy hiểm, vì theo trang hướng dẫn của nó:
đổi tên sẽ đổi tên các tập tin định bằng cách thay thế xuất hiện đầu tiên của ...
Sẽ vui vẻ làm điều sai với tên tệp như c.txt.parser.y
.
Dưới đây là một giải pháp sử dụng find
và bash
:
find -type f -name '*.txt' | while read f; do mv "$f" "${f%.txt}"; done
Hãy ghi nhớ rằng điều này sẽ phá vỡ nếu một tên tập tin chứa một dòng mới (hiếm, nhưng không phải bất khả thi).
Nếu bạn có GNU tìm thấy, đây là một giải pháp vững chắc hơn:
find -type f -name '*.txt' -print0 | while read -d $'\0' f; do mv "$f" "${f%.txt}"; done
Đó là sự thật về phiên bản 'util-linux-ng' của' rename', nhưng phiên bản script Perl có thể làm 'đổi tên '/ .txt $ //' * .txt' –
cho tôi đổi tên/.txt $ // '* .txt không hoạt động – rp101
bạn đang thiếu "." đối với vị trí mà bạn muốn chạy. có thể đây là biến thể tìm kiếm osx của tôi hoặc đường dẫn của tôi không được đặt chính xác – bgs