Un modo rapido sarebbe modificare il nome del file tux in modo che il tuo comando di spostamento non corrisponda.
Ad esempio:
mv Tux.png .Tux.png
mv * ~/somefolder
mv .Tux.png Tux.png
Metti quanto segue nel tuo .bashrc
shopt -s extglob
Estende le espressioni regolari. Puoi quindi spostare tutti i file tranne uno di
mv !(fileOne) ~/path/newFolder
Eccezioni rispetto ad altri comandi
Si noti che, nella copia delle directory, il forward-flash non può essere utilizzato nel nome come notato nel thread Perché extglob tranne la rottura tranne la condizione?:
cp -r !(Backups.backupdb) /home/masi/Documents/
quindi Backups.backupdb/
è sbagliato qui prima della negazione e non lo userei nemmeno nello spostamento delle directory a causa del rischio di usare erroneamente i glob con altri comandi e possibili altre eccezioni.
Se usi bash e hai il extglob
set di opzioni di shell (che di solito è il caso):
mv ~/Linux/Old/!(Tux.png) ~/Linux/New/
Io andrei con il metodo tradizionale find &xargs:
find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png -print0 |
xargs -0 mv -t ~/Linux/New
-maxdepth 1
fa in modo che non cerchi in modo ricorsivo. Se ti interessano solo i file, puoi dire -type f
. -mindepth 1
fa in modo che non includa il ~/Linux/Old
percorso stesso nel risultato. Funziona con qualsiasi nome di file, inclusi quelli che contengono newline incorporati.
Un commento fa notare che il mv -t
opzione è probabilmente un'estensione GNU. Per i sistemi che ne sono sprovvisti
find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png \
-exec mv '{}' ~/Linux/New \;