親フォルダに基づいて各ファイルの名前を変更しながら、特定の拡張子を持つファイルのみをコピーします。

親フォルダに基づいて各ファイルの名前を変更しながら、特定の拡張子を持つファイルのみをコピーします。

複数のディレクトリがあります。

├── 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

各ディレクトリには1つのexport.ascファイルが含まれています。

copyすべてのexport.ascファイルを新しいディレクトリに移動しながら、親ディレクトリと同じ名前を持つように名前を変更したいと思います。したがって、最終的には上記の例に基づいてこのファイルを新しいフォルダに配置します。

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

この目標をどのように達成できますか?

関連フォローしたがまだ成功していないトピック

答え1

あなたはこれを行うことができます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

関連情報