move コマンドが一致しないように、tux ファイル名を変更するのが簡単な方法です。
例:
mv Tux.png .Tux.png
mv * ~/somefolder
mv .Tux.png Tux.png
以下を .bashrc に追加してください
shopt -s extglob
正規表現を拡張します。その後、1 つを除くすべてのファイルを次の方法で移動できます
mv !(fileOne) ~/path/newFolder
他のコマンドに関する例外
ディレクトリのコピーでは、スレッド Why extglob except breakexcept condition? で通知されているように、名前に forward-flash を使用できないことに注意してください:
cp -r !(Backups.backupdb) /home/masi/Documents/
そう Backups.backupdb/
ここでは否定の前に間違っています。ディレクトリの移動にも使用しません。他のコマンドでグロブを誤って使用したり、他の例外が発生する可能性があるためです。
bash を使用していて extglob
がある場合 シェル オプション セット (通常はそうです):
mv ~/Linux/Old/!(Tux.png) ~/Linux/New/
従来の find &xargs の方法を使用します:
find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png -print0 |
xargs -0 mv -t ~/Linux/New
-maxdepth 1
再帰的に検索しないようにします。ファイルだけに関心がある場合は、-type f
と言えます . -mindepth 1
~/Linux/Old
を含めないようにします 結果へのパス自体。埋め込まれた改行を含むものを含む、任意のファイル名で動作します。
1 つのコメントは、mv -t
が オプションはおそらく GNU 拡張です。それがないシステムの場合
find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png \
-exec mv '{}' ~/Linux/New \;