GNU/Linux >> Znalost Linux >  >> Linux

Procházení podadresářů a spouštění příkazu v každém z nich

for dir in ~/projects/git/*; do (cd "$dir" && git pull); done

Pokud potřebujete, aby byl rekurzivní:

find . -type d -name .git -exec sh -c "cd \"{}\"/../ && pwd && git pull" \;

Tím se sestoupí do všech adresářů pod aktuálním a provede se git pull na ty podadresáře, které mají adresář .git (můžete to omezit pomocí -maxdepth ).


Pokud máte nainstalovaný GNU Parallel http://www.gnu.org/software/parallel/, můžete to udělat:

cd ~/projects/git/; ls | parallel 'cd {} && git pull'

Toto poběží paralelně, takže pokud je připojení některých serverů git k síti pomalé, může to věci urychlit.

Podívejte se na úvodní video pro GNU Parallel a dozvíte se více:http://www.youtube.com/watch?v=OpaiGYxkSuQ


Linux
  1. Linuxové příkazy:jobs, bg a fg

  2. Linux – nalezení podřetězce v souborech napříč podadresáři pomocí jediného vestavěného příkazu?

  3. Možnosti Su – Spuštění příkazu jako jiný uživatel?

  1. Použít příkaz Grep a vyhledat?

  2. Otevření více záložek terminálu a spuštění příkazu?

  3. Jak vytvářet a aplikovat opravy v GIT pomocí příkazu diff a použít

  1. Git a pevné odkazy

  2. Paralelní spuštění skriptu shellu

  3. Rekurzivně procházet adresáře a spustit příkaz na souboru v adresáři