Linux: Скопіюйте всі файли шляхом розширення в один dirrectory


8

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

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

Що я роблю неправильно?

Відповіді:


11

Використовуйте для цього пошук 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знайдені файли {}до цільового каталогу з 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;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.