Files

將文件複製到新名稱 - 最短的方法

  • June 22, 2017

在一個目錄中,我有大約 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}

引用自:https://unix.stackexchange.com/questions/331461