Files
將文件複製到新名稱 - 最短的方法
在一個目錄中,我有大約 150 個具有特定副檔名的文件,例如:
abc.ext def.ext ghi.ext ...
現在我想將所有這些文件也複製到一個新的文件名(不帶副檔名):
abc def ghi
完成這項工作的最短方法是什麼?是否可以不在 bash 文件中編寫循環?
編輯:感謝您的回答(dirkt,John Newman)。
看到答案後,我會堅持使用較短的答案,儘管它有一個循環。
可以不編寫腳本(“bash 文件”),但不能不使用循環:
for f in *.ext ; do cp -- "$f" "$(basename "$f" .ext)" ; done
basename
可以用來去掉後綴。
沒有循環絕對是可能的。是不是很好……我會留給你。
$ find . -type f -name "*.ext" -print0 | xargs -0 -I {} echo cp -T {} {}SUB | sed -e 's/\.extSUB//g'
將管道附加到 sh 以退出空執行模式。反引號不好,因為它會去除換行符,除非你處理 $IFS。如上所述,反引號還有其他字元問題。還需要 cp -T 作為最後一個參數通常需要一個目錄。
我沒有足夠的“代表”來評論上述內容,但是您可以使用 bash 的各種技巧
${}
來避免basename
.子字元串:
${f:0:-4}
或最長匹配:${f%%.ext}