Tôi đang sử dụng Linux Slackware 14.0, bash 4.2. Giả sử, tôi có 2 tệp trong thư mục:
bash-4.2$ ls
1.txt 2.txt
Tôi muốn đổi tên chúng thành .svg. Câu trả lời này được chấp nhận và nâng cao, vì vậy tôi nghĩ rằng nó phải hoạt động. Ông đã sử dụng lệnh này:
find . -name "*.andnav" -exec rename -v 's/\.andnav$/\.tile/i' {} \;
Vì vậy, tôi đã viết lệnh tương tự, nhưng nó đã in một lỗi:
bash-4.2$ find . -name "*.txt" -exec rename -v 's/\.txt$/\.svg/i' {} \;
rename: not enough arguments
Khi tôi chỉ muốn in các tập tin, nó hoạt động:
bash-4.2$ find . -name "*.txt" -print
./1.txt
./2.txt
Tôi biết rằng tôi có thể đổi tên bằng cách tiếp cận đơn giản hơn:
bash-4.2$ rename .txt .svg ./*.txt
bash-4.2$ ls
1.svg 2.svg
Nhưng tại sao lệnh từ câu trả lời đó không hiệu quả với tôi?
find . -name '*.txt' -exec rename .txt .svg {} +
info --index-search=-exec find
perl
(mà câu trả lời giả định) và một từ linux-linux (mà bạn có).