Я отразил каталог с сервера с большим количеством подкаталогов, каждый из которых содержит пакет .txz и обычные файлы .txt и дескриптор. Я хотел бы сделать следующее:

Найдите / найдите все файлы .txz во всех подкаталогах, затем переместите их все в определенную папку; используя регулярные выражения. Каким будет регулярное выражение в bash на slackware linux? Спасибо

1 ответ1

1

Чтобы ответить на ваш вопрос, как вы его задали:

find -regex '.*\.txz' -type f -exec mv {} '/destination/path' \;

Однако обратите внимание, что использование регулярных выражений не является необходимым для вашей задачи. Команда ниже работала бы также:

find -name '*.txz' -type f -exec mv {} '/destination/path' \;

Вы также можете сделать это без использования чего-либо, кроме bash и mv. При этом используется поиск по шаблону и опция оболочки globstar.

shopt -s globstar
for file in ./**/*.txz; do
    [[ -f $file ]] && mv "$file" '/destination/path'
done
shopt -u globstar

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