Tato otázka zde již obsahuje odpovědi :„mkdir foo; svn mv * foo”
(3 odpovědi)
Uzavřeno před 8 lety.
Linux
(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.