У меня есть сто подкаталогов, содержащих по 1 интересующему файлу в каждом из подкаталогов. Я хочу скопировать эти 100 (* file_of_interest.txt) интересующих файлов в новую папку. Как я могу сделать это сценарий оболочки?

2 ответа2

0

Я бы сделал это примерно так:

for i in *; do mv $i/files_of_interest.txt ../new_interest_folder; done

Обратите внимание, что если интересующие файлы являются наборами, такими как все файлы .png, это должно работать:

for i in *; do mv $i/*.png ../new_png_folder; done

Знак * после 'in' может быть заменен любым другим глобусом оболочки. Отличный способ выяснить, что произойдет, это повторить вещи:

for i in *folderx *foldery; do echo mv $i/*.png ../new_png_folder; done

Если это создает список команд, которые вы хотели бы выполнить, вернитесь назад и удалите «echo» из строки, и запустите его снова.

Глобусы «* folderx * foldery» будут создавать список всех папок, оканчивающихся на "folderx" или "foldery"

0

Как насчет сценария

#! /bin/bash
find /path/to/root -type -f -name "*.txt" -exec cp {} /target/directory \;

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