Bash
僅當文件已存在時,才將文件複製到目標文件夾。但源文件具有不同的文件副檔名
僅當文件已存在時,才將文件複製到目標文件夾。但源文件具有不同的文件副檔名。
即我有一些帶有“ .desktop.in ”副檔名的文件的備份,我想複製到文件副檔名是“ .desktop ”的目的地,並且只複製目的地中已經存在的文件。
源文件夾包含:
- a.desktop.in
- b.desktop.in
- c.desktop.in
目標文件夾包含:
- a.桌面
- b.桌面
只想覆蓋a.desktop和b.desktop文件
試過這個:
for file in /destination/*.desktop;do cp /src/"${file##*/}".in "$file";done
但這看起來並沒有針對該任務進行優化。
你知道更好的方法嗎?
for file in /destination/*.desktop; do echo cp "/src/${file##*/}.in" "$file"; done
如果一切看起來都不錯,請刪除
echo
.
你所擁有的基本上和它得到的一樣好。
您可以通過更改到列舉文件的目錄來節省一點點文件名操作。這是可讀性問題,而不是性能問題。
set -e cd /destination for file in *.desktop; do cp "/src/$file.in" "$file" done
不要忘記檢查故障。