Files

具有中間目錄變數模式的 cp 文件

  • January 10, 2021

我有一個目錄 l

── 10020
│   ├── live
│   │   ├── 211231.jpg
│   │   ├── 211231_BB.txt
│   │   ├── 448378.jpg
│   │   ├── 448378_BB.txt
│   │   ├── 460830.jpg
│   │   └── 460830_BB.txt
│   └── spoof
│       ├── 035383.jpg
│       ├── 035383_BB.txt
│       ├── 057847.jpg
│       ├── 057847_BB.txt
│       ├── 080343.jpg
│       ├── 080343_BB.txt
├── 10021
│   ├── live
│   │   ├── 013031.jpg
│   │   ├── 013031_BB.txt
│   │   ├── 025895.jpg
│   │   ├── 025895_BB.txt
│   └── spoof
│       ├── 006434.jpg
│       ├── 006434_BB.txt
│       ├── 021470.jpg
│       ├── 021470_BB.txt
│       ├── 027017.jpg
│       ├── 027017_BB.txt
├── 10022
│   ├── live
│   │   ├── 125401.jpg
│   │   ├── 125401_BB.txt
│   │   ├── 196573.jpg
│   │   └── 196573_BB.txt
│   └── spoof
│       ├── 013054.jpg
│       ├── 013054_BB.txt
│       ├── 015386.jpg
│       ├── 015386_BB.txt
│       ├── 016760.jpg
│       ├── 016760_BB.txt
│       ├── 020204.jpg
│       ├── 020204_BB.txt
├── 10023
│   ├── live
│   │   ├── 000240.jpg
│   │   ├── 000240_BB.txt
│   │   ├── 030384.jpg
│   │   ├── 030384_BB.txt
│   │   ├── 034898.jpg
│   │   ├── 034898_BB.txt
│   └── spoof
│       ├── 022241.jpg
│       ├── 022241_BB.txt
│       ├── 023855.jpg
│       ├── 023855_BB.txt
│       ├── 030252.jpg
│       ├── 030252_BB.txt
│       └── 475104_BB.txt
[it goes on, as you guys suggested I put up the real directory rather than a simplified version]

我想 cp 或 mv all*/live/*.jpg*/live/*.png 進入另一個目錄,例如dir 如何實現?

我嘗試過的事情:

rsync -av ~/train/*/*.jpg dir
find ~train/ -type f -name '*/live/*.jpg' -exec cp '{}' dir ';'
rsync -a --include '*.jpg' --exclude 'live/*' ~/train/ dir

如我所見,在這種情況下,沒有任何名稱為 的子目錄real,所以如果您共享您的真實目錄名稱,那麼您的關鍵字可能有一點問題。順便說一句,您可以使用帶有@Kusalananda 結構的“查找”或使用 for 循環來 cp 您的文件和目錄

find -path '/media/data/woreom/dataset/CelebA_Spoof/Data/train /*/real/*.jpg' -type f -exec cp '{}' /media/data/woreom/dataset/dataset/real/ ';'什麼也沒做。

這是因為您要求/media/data/woreom/datase…在目前工作目錄中查找。

您需要指定搜尋位置,作為第一個參數。所以改為(我認為應該這樣做。)

find /media/data/woreom/dataset/CelebA_Spoof/Data/train \
   -path '/*/real/*.jpg' -type f \
   -exec echo cp '{}' /media/data/woreom/dataset/dataset/real/ ';'

我添加了echo測試這個詞,當它正常工作時刪除。

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