Główna » jak » Shell Geek Zmień nazwę wielu plików na raz

    Shell Geek Zmień nazwę wielu plików na raz

    Załóżmy, że masz katalog zawierający setki plików o błędnych nazwach plików i chcesz zastąpić każdą nazwę pliku zawierającą test z szturchać. (To jest wymyślny przykład). Możemy to łatwo zrobić za pomocą polecenia "for" w bashu, w połączeniu z odrobiną dobroci basha. Dziś nauczymy się, jak zastąpić tekst w zmiennej w pętli for.

    Polecenie "for" działa w następujący sposób:

    dla var in; do $ var; done

    Możesz wymienić z dowolnym wzorem dopasowania pliku, takim jak * lub * .txt, i możesz go zastąpić za pomocą dowolnego polecenia systemu Linux. Polecenie będzie uruchamiane sekwencyjnie dla każdego pliku zgodnego ze wzorem dopasowania pliku.

    W tym miejscu obsługa zmiennych bash czyni to jeszcze bardziej interesującym. Zamiast po prostu zrobić coś takiego jak "mv $ var", możemy zastąpić tekst w nazwie pliku przy użyciu następującej składni:

    $ var / originaltext / replacetext

    Tak więc, jeśli uruchomimy to polecenie w naszym katalogu:

    dla f in *; wykonaj mv $ f $ f / test / prod; done

    Dla każdego pliku dopasowanego przez * bash wykona polecenie podobne do tego:

    mv test.config prod.config

    Odkryłem, że znajomość powłoki jest nieoceniona podczas administrowania serwerami lub po prostu dla zarządzania kolekcją plików i zaoszczędziła mi godzin pracy, która w przeciwnym razie byłaby pracą ręczną..

    I tak, zdaję sobie sprawę, że istnieje wiele narzędzi, które mogą dokonać zmiany nazwy wielu plików.