Bash

僅當文件已存在時,才將文件複製到目標文件夾。但源文件具有不同的文件副檔名

  • March 6, 2015

僅當文件已存在時,才將文件複製到目標文件夾。但源文件具有不同的文件副檔名。

即我有一些帶有“ .desktop.in ”副檔名的文件的備份,我想複製到文件副檔名是“ .desktop ”的目的地,並且只複製目的地中已經存在的文件。

源文件夾包含:

  • a.desktop.in
  • b.desktop.in
  • c.desktop.in

目標文件夾包含:

  • a.桌面
  • b.桌面

只想覆蓋a.desktopb.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

不要忘記檢查故障。

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