На этот вопрос уже есть ответ здесь:
У меня есть папка с именем «Java» с 20 подпапками (от «День-01» до «День-20»). В каждой подпапке есть один или два файла .wav, а также несколько других файлов. Я хочу скопировать весь каталог, кроме файлов .wav, через терминал. Как мне это сделать?
Самый легкий путь состоял бы в том, чтобы использовать rsync
с --exclude
опция исключить к .wav
файлы от копирования:
rsync -av --exclude='*.wav' /path/to/Java /out/dir
Пример:
/foobar/Java% tree
.
├── day-01
│ ├── 01.sh
│ ├── 01.txt
│ └── 01.wav
├── day-02
│ ├── 02.sh
│ ├── 02.txt
│ └── 02.wav
├── day-03
│ ├── 03.txt
│ └── 03.wav
├── day-04
│ └── 04.txt
└── day-05
└── 05.wav
/foobar/out% rsync -av --exclude='*.wav' ../Java .
sending incremental file list
Java/
Java/day-01/
Java/day-01/01.sh
Java/day-01/01.txt
Java/day-02/
Java/day-02/02.sh
Java/day-02/02.txt
Java/day-03/
Java/day-03/03.txt
Java/day-04/
Java/day-04/04.txt
Java/day-05/
sent 564 bytes received 158 bytes 1,444.00 bytes/sec
total size is 0 speedup is 0.00
/foobar/out% tree
.
└── Java
├── day-01
│ ├── 01.sh
│ └── 01.txt
├── day-02
│ ├── 02.sh
│ └── 02.txt
├── day-03
│ └── 03.txt
├── day-04
│ └── 04.txt
└── day-05
Самый легкий путь состоит в том, чтобы проуспешно использовать rsync:
rsync -avz --exclude "*.wav" SOURCE_DIR DESTINATION_DIR