我必須做一個sed行(在Linux中也使用管道)來更改文件擴展名,所以我可以做一些mv *.1stextension *.2ndextension
類似mv *.txt *.c
。問題是我不能使用批處理或for循環,所以我必須使用pipes和sed命令完成所有操作。如何使用sed更改文件擴展名?
回答
你可以使用字符串操作
filename="file.ext1"
mv "${filename}" "${filename/%ext1/ext2}"
或者,如果你的系統支持,您可以使用rename
。
更新
你也可以做這樣的
mv ${filename}{ext1,ext2}
被稱爲括號擴展
這是如何工作的大量文件? – Floris
我不知道我們是否被允許用戶'重命名'...它是在大多數Linux系統中可用 –
謝謝,但我不能使用任何批處理或腳本語句,我只能使用我的命令行,sed和管道 – antonbalboa
的東西,這可能工作:
find . -name "*.txt" |
sed -e 's|./||g' |
awk '{print "mv",$1, $1"c"}' |
sed -e "s|\.txtc|\.c|g" > table;
chmod u+x table;
./table
我不知道爲什麼你不能使用循環。它使生活變得更輕鬆:
newex="c"; # Give your new extension
for file in *.*; # You can replace with *.txt instead of *.*
do
ex="${file##*.}"; # This retrieves the file extension
ne=$(echo "$file" | sed -e "s|$ex|$newex|g"); # Replaces current with the new one
echo "$ex";echo "$ne";
mv "$file" "$ne";
done
您可以使用find
找到的所有文件,然後通過管道將進入一個while read
循環:
$ find . -name "*.ext1" -print0 | while read -d $'\0' file
do
mv $file "${file%.*}.ext2"
done
的${file%.*}
是小權模式篩選。 %
標誌着從右側刪除的模式(匹配最小可能的glob模式),.*
是模式(最後的.
後跟.
後的字符)。
-print0
將文件名與NUL
字符分開,而不是\n
。 -d $'\0'
將讀取由NUL
字符分隔的文件名。這樣,帶有空格,製表符,\n
或其他古怪字符的文件名將被正確處理。
您可以嘗試以下選項
選項1find
隨着rename
find . -type f -name "*.ext1" -exec rename -f 's/\.ext1$/ext2/' {} \;
選項2find
隨着mv
find . -type f -name "*.ext1" -exec sh -c 'mv -f $0 ${0%.ext1}.ext2' {} \;
注意:據觀察,rename
不適用於許多終端
我不得不在Makefile中用.o替換.o .o。這解決了我的問題,謝謝。 – Garini
另一種解決方案只有SED和SH
printf "%s\n" *.ext1 |
sed "s/'/'\\\\''/g"';s/\(.*\)'ext1'/mv '\''\1'ext1\'' '\''\1'ext2\''/g' |
sh
有更好的表現:只有一個進程創建
perl -le '($e,$f)[email protected];map{$o=$_;s/$e$/$f/;rename$o,$_}<*.$e>' ext2 ext3
- 1. 使用sed更改文件擴展名
- 2. 使用Jquery更改文件擴展名
- 3. 使用PHP更改文件擴展名
- 4. 如何更改文件的擴展名?
- 5. 如何更改文件擴展名?
- 6. 更改文件擴展名?
- 7. 文件擴展名更改
- 8. 如何使用jquery更改文件的擴展名
- 9. 如何使用makefile更改所有文件擴展名
- 10. 在Excel中,如果使用VBA,我如何使用「路徑+文件名+擴展名」並更改擴展名?
- 11. 更改文件名後綴(使用sed?)
- 12. 如何使用正則表達式將.txt文件擴展名更改爲.xml文件擴展名?
- 13. 如何更改配置文件的文件擴展名(c#)
- 14. tcsh:如何更改多個文件的文件擴展名?
- 15. Intellij - 如何從IDE中更改文件的文件擴展名?
- 16. Apache mod_rewrite更改文件擴展名
- 17. CMD更改文件擴展名
- 18. 更改文件擴展名的語言?
- 19. 在unix中更改文件擴展名
- 20. 在Python中更改文件擴展名
- 21. 更改gif文件的擴展名
- 22. PHP更改文件擴展名
- 23. Ansible角色:更改文件擴展名
- 24. 在SharePoint中更改文件擴展名
- 25. 更改文件擴展名VB.NET
- 26. Grunt:更改文件擴展名
- 27. 更改文件擴展名SPListItem SharePoint 2007
- 28. Git自動更改文件擴展名
- 29. 批量更改文件擴展名
- 30. 使用mozilla thunderbird擴展名更改文件夾的名稱
您可以用'xargs'? – Floris
爲什麼你不能使用循環?你應該說清楚!你做這個作爲功課的一部分嗎? – iamauser
當然我是,我沒有提到,但我認爲這是相當知名的,因爲有限制 – antonbalboa