Linux

僅複製具有特定副檔名的文件,同時根據父文件夾重命名每個文件

  • April 9, 2019

我有幾個目錄:

├── folder1.x
│   ├── dsferwe
│   ├── ewrwr342
│   ├── analysis
│   ├── fdsds
│   ├── vcxvcxz
│   ├── 324322
│   ├── export.asc
│   ├── f_random_subfolder.xf
│   │   ├── -.method
│   │   ├── desktop.ini
│   │   ├── lock.file
│   │   └── submethods.xml
│   └── Sync
├── random_folder4.x
│   ├── dsferwe
│   ├── ewrwr342
│   ├── analysis
│   ├── fdsds
│   ├── vcxvcxz
│   ├── 324322
│   ├── export.asc
│   ├── 22random_subfolder.xf
│   │   ├── -.method
│   │   ├── desktop.ini
│   │   ├── lock.file
│   │   └── submethods.xml
│   └── Sync
├── X93430.x
│   ├── dsferwe
│   ├── ewrwr342
│   ├── analysis
│   ├── fdsds
│   ├── vcxvcxz
│   ├── 324322
│   ├── export.asc
│   ├── random_subfolder222.xf
│   │   ├── -.method
│   │   ├── desktop.ini
│   │   ├── lock.file
│   │   └── submethods.xml
│   └── Sync

每個目錄都包含一個export.asc文件。

我想將copy所有export.asc文件重命名為與其父目錄同名的新目錄。因此,最後根據上面的範例,我會將這些文件放在一個新文件夾中:

folder1.x.asc
random_folder4.x.asc
X93430.x.asc

我怎樣才能做到這一點?

相關主題我已經關注但沒有任何成功

你可以這樣做find -exec sh -c ...

find . -name export.asc \
-exec sh -c 'cp "$1" /path/to/new/folder/"$(basename "$(dirname "$1")")".asc' sh {} \;
  • "$(basename "$(dirname "$1")")"將是文件所在文件夾的名稱。

如果您-icp確保在沒有事先互動的情況下不會覆蓋任何文件,請添加。

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