GNU/Linux >> Znalost Linux >  >> Linux

Zkopírujte všechny soubory odpovídající vzoru z adresáře a podadresářů do jednoho adresáře

Zkuste:

find src/ -type f | grep -i so$ | xargs -i cp {} dst

Pokud používáte Bash, můžete zapnout globstar možnost shellu pro rekurzivní přiřazování souborů a adresářů:

shopt -s globstar
cp src/**/*.so dst

Pokud potřebujete najít soubory, jejichž názvy začínají . a/nebo soubory v a pod adresáři, jejichž názvy začínají . ,nastavte dotglob možnost také (např. s shopt -s dotglob ). Můžete je nastavit oba jedním příkazem:

shopt -s globstar dotglob

Zkusil jsem příkaz navržený Mikem:

find src/ -type f | grep -i so$ | xargs -i cp {} dst

ale skončilo to vysypáním všech souborů do adresáře dst se ztracenými relativními cestami.

Pro zachování relativních cest je třeba příkaz upravit na toto:

find src/ -type f | grep -i so$ | xargs -i cp {} dst/{}

Linux
  1. Jak najít a zkopírovat určitý typ souborů z jednoho adresáře do druhého v Linuxu

  2. Zřetězit konkrétní soubory do jednoho jediného souboru?

  3. Naučte se kopírovat soubory a složky z/na jiný server

  1. Jak přesunout (a přepsat) všechny soubory z jednoho adresáře do druhého?

  2. Rekurzivní kat všechny soubory do jednoho souboru

  3. Odstraňte odpovídající soubory ve všech podadresářích

  1. Skript / příkaz pro získání IPS ze seznamu názvů hostitelů a sloučení do jednoho souboru?

  2. Zkopírujte soubory pomocí SCP a Rsync

  3. Jak mohu rekurzivně zkopírovat všechny soubory pdf v adresáři (a jeho podadresářích) do jednoho výstupního adresáře?