GNU/Linux >> Znalost Linux >  >> Linux

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

Protože find má možnost vyloučit, použijte find + xargs + mv:

find /source/directory -name ignore-directory-name -prune -print0 | xargs -0 mv --target-directory=/target/directory

Všimněte si, že toto je téměř zkopírováno z manuálové stránky find (myslím, že použití mv --target-directory je lepší než cpio).


Předpokládejme, že struktura dir je podobná,

|parent
    |--child1
    |--child2
    |--grandChild1
    |--grandChild2
    |--grandChild3
    |--grandChild4
    |--grandChild5
    |--grandChild6

A potřebujeme přesunout soubory tak, aby to vypadalo jako,

|parent
    |--child1
    |   |--grandChild1
    |   |--grandChild2
    |   |--grandChild3
    |   |--grandChild4
    |   |--grandChild5
    |   |--grandChild6
    |--child2

V tomto případě musíte vyloučit dva adresáře child1 a child2 a přesuňte zbytek adresářů do child1 adresář.

použití,

mv !(child1|child2) child1

Tím přesunete všechny zbývající adresáře do child1 adresář.


Není to přesně to, co jste požadovali, ale mohlo by to fungovat:

mv the-folder-you-want-to-exclude somewhere-outside-of-the-main-tree
mv the-tree where-you-want-it
mv the-excluded-folder original-location

(V podstatě přesuňte vyloučenou složku z většího stromu, který chcete přesunout.)

Takže pokud mám a/ a chci vyloučit a/b/c/* :

mv a/b/c ../c
mv a final_destination
mkdir -p a/b
mv ../c a/b/c

Nebo něco takového. Jinak byste mohli získat find abychom vám pomohli.


Nejprve získejte názvy souborů a složek a vylučte, co chcete:

ls --ignore=file1 --ignore==folder1 --ignore==regular-expression1 ...

Poté předejte filtrovaná jména do mv jako první parametr a druhý parametr bude cíl:

mv $(ls --ignore=file1 --ignore==folder1 --ignore==regular-expression1 ...) destination/

Linux
  1. Jak extrahovat soubory Tar do konkrétního nebo jiného adresáře v Linuxu

  2. Jak zjistit počet souborů v adresáři a podadresářích

  3. 5 způsobů, jak použít příkaz move v Linuxu

  1. Jak používat příkaz Grep k vyhledání textu v souborech

  2. Jak používat Inotifywait ke sledování adresáře pro vytváření souborů s konkrétní příponou?

  3. Jak přesunout konkrétní soubory na základě jejich přípon?

  1. Jak používat Linuxový příkaz find k hledání souborů

  2. Jak používat příkaz rpm2cpio v Linuxu

  3. Jak použít příkaz 'cp' k vyloučení konkrétního adresáře?