GNU/Linux >> Znalost Linux >  >> Linux

Přesuňte všechny soubory kromě jednoho

Rychlým způsobem by bylo upravit název souboru tux tak, aby se váš příkaz move neshodoval.

Například:

mv Tux.png .Tux.png

mv * ~/somefolder

mv .Tux.png Tux.png

Vložte následující do svého .bashrc

shopt -s extglob

Rozšiřuje regexes. Poté můžete přesunout všechny soubory kromě jednoho pomocí

mv !(fileOne) ~/path/newFolder

Výjimky ve vztahu k ostatním příkazům

Všimněte si, že při kopírování adresářů nelze v názvu použít dopředný flash, jak bylo uvedeno ve vláknu Why extglob kromě breaking kromě podmínky?:

cp -r !(Backups.backupdb) /home/masi/Documents/

takže Backups.backupdb/ je zde před negací špatně a nepoužil bych ji ani při přesouvání adresářů kvůli riziku nesprávného použití než globs s jinými příkazy a případnými dalšími výjimkami.


Pokud používáte bash a máte extglob sada možností shellu (což je obvykle případ):

mv ~/Linux/Old/!(Tux.png) ~/Linux/New/

Šel bych tradičním způsobem find &xargs:

find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png -print0 | 
    xargs -0 mv -t ~/Linux/New

-maxdepth 1 způsobí, že nebude hledat rekurzivně. Pokud vám záleží pouze na souborech, můžete říct -type f . -mindepth 1 nezahrnuje ~/Linux/Old samotnou cestu do výsledku. Funguje s libovolnými názvy souborů, včetně těch, které obsahují vložené nové řádky.

Jeden komentář uvádí, že mv -t volba je pravděpodobně rozšíření GNU. Pro systémy, které jej nemají

find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png \
    -exec mv '{}' ~/Linux/New \;

Linux
  1. Jak přesunout všechny soubory (včetně skrytých) z jednoho adresáře do druhého?

  2. Smazat všechny soubory kromě určitého podadresáře pomocí funkce Najít?

  3. Použijte Najít k nalezení určitého adresáře a odstranění všech souborů v něm kromě jednoho adresáře?

  1. Jak použít příkaz 'mv' k přesunutí souborů kromě souborů v konkrétním adresáři?

  2. Příkaz pro výpis všech souborů kromě . (tečka) a .. (tečka tečka)

  3. Smažte všechny soubory kromě nejnovějších 3 v bash skriptu

  1. Přesunout řadu číslovaných souborů?

  2. Můžete změnit oprávnění ke všem souborům kromě jednoho adresáře v Linuxu?

  3. Jak odstranit všechny soubory v adresáři kromě některých?