GNU/Linux >> Znalost Linux >  >> Linux

Mv * Složka (vyhnutí se chybě „nelze přesunout“)?

Tato otázka zde již obsahuje odpovědi :„mkdir foo; svn mv * foo”

(3 odpovědi)
Uzavřeno před 8 lety.

Kdykoli chci přesunout tisíce souborů do nové složky, vždy narazím na stejný problém.

> mkdir my_folder
> mv * my_folder
mv: cannot move 'my_folder to a subdirectory of itself 'my_folder'

I když si myslím, že výše uvedená chyba je neškodná (je? ) Zajímalo by mě, jestli existuje způsob, jak se tomu vyhnout.

V případě, že na tom záleží, mám zájem o řešení v zsh nebo takové, které dobře funguje v různých shellech.

Přijatá odpověď:

V zsh s extended_glob povolena, můžete použít ~ k vyloučení vzorů z globů, takže můžete použít:

setopt extended_glob
mv -- *~my_folder my_folder

Nebo použijte operátor negace (stále s extended_glob ):

mv -- ^my_folder my_folder

Použijte složené závorky, abyste se vyhnuli psaní názvu adresáře dvakrát:

mv -- {^,}my_folder

V bash (pro ostatní hledače odpovědí, kteří jej používají), můžete použít rozšířené globy ve stylu Ksh:

# If it's not already enabled
shopt -s extglob
mv -- !(my_folder) my_folder

Tuto syntaxi můžete také použít v zsh pokud povolíte ksh_glob možnost.


Linux
  1. Co je :-!! v C kódu?

  2. Jak přesně duplikovat složku

  3. Nainstalujte gem do místní složky

  1. Naučte se zpracování chyb Bash na příkladu

  2. Bash:ls * bez seskupování složek

  3. Velikost složky s du

  1. Zpracování chyb ve skriptech Bash

  2. Pochopení chybových kódů HTTP a dalších chyb webových stránek

  3. chyba autoconf na ubuntu 11.04