6

Я пытаюсь скопировать все файлы *.tif из ./old в ./new. В ./old у меня много подкаталогов с разными файлами, а в ./new мне нужны только TIF-файлы, без дерева папок. Итак, я попробовал cp -vR ./old/*.TIF ./new и получил ошибку:

No such file file or dirrectory "./old/*.TIF"

Что я делаю не так?

3 ответа3

9

Используйте поиск для этой find . -name "*.TIF" -exec cp {} new \;

Так что find используется для поиска файлов. Команда говорит find файлы, начиная отсюда . где имя файла -name заканчивается на .tif запомните двойные кавычки для расширения оболочки. Так что найти все tif файлы просто.

find . -name "*.tif"
./2/3/3.tif
./2/2.tif
./1.tif

Затем мы используем -exec чтобы что-то сделать с файлами, в этом случае cp found files {} в целевой каталог new за которым следует точка с запятой \;

2

Так и должно быть. Вы должны войти в старый каталог:

cd old
cp -R *.tif ../new
0

в старом каталоге (прямой) у вас могут не быть никаких файлов .tif.

кроме того, вы можете получить список файлов и скопировать их с помощью простого скрипта

find /old -type f | xargs grep *.tif выдаст вам список

ты можешь делать как

for i in `find /old -type f | xargs grep *.tif` 
do
cp $i /new
done;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .