拡張子[重複]を除くすべてのファイルを移動する

拡張子[重複]を除くすべてのファイルを移動する

私は、ダウンロードから /usr/src に tar.bz2 を移動しました。これは、システムにインストールするすべてのものを保存しておく場所です。今、ファイルを抽出し、その内容を /usr/share/icons に移動したいと思います。ただし、tar.bz2 自体は移動したくありません。

# ls -l | grep Comix
-rw-rw-r--  1 guarddog guarddog   2190951 May 26 11:03 ComixCursors-0.8.2.tar.bz2
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Black
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Blue
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Green
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Orange

出力コマンドでは、ターミナル内で tar.bz2 以外のすべてを移動します。

以下を試しましたが、残念ながら tar.bz2 も移動してしまいます。

 mv Comix*[!tar.bz] /usr/local/share

否定演算子によって、tar.bz で終わるファイルが除外されることを期待していました。以下の解決策は私が探していたものであり、複雑なフラグで find を使用したくありませんでした。

答え1

GLOBIGNORE次の変数を使用できますbash:

GLOBIGNORE=ComixCursors-0.8.2.tar.bz2

次のコマンドを実行します:

mv ComixCursors* /usr/share/icons/

また、操作が完了したら、unset不要なシナリオを回避するために変数を設定することをお勧めします。

unset GLOBIGNORE

または

GLOBIGNORE=

答え2

古き良きものを使用してくださいfind:

find /usr/src -maxdepth 1 -type f -name "Comix*[^\.tar\.bz2]" -print0 | xargs -I{} -0 mv {} /usr/share/icons/

答え3

使用する簡単なコマンドもあります。たとえば、ホーム ディレクトリに、 や などを含むフォルダー「Xtest」とtest.tar.gz、 thenを除くすべてのファイルを移動する空のフォルダー「Xtest2」があります。test.txttest2.txt.tar.gz

cd ~/Xtest
mv !(test.tar.gz) ~/Xtest2

を除くすべてのコンテンツはフォルダーtest.tar.gzに移動されますXtest2

関連情報