![拡張子[重複]を除くすべてのファイルを移動する](https://rvso.com/image/1126761/%E6%8B%A1%E5%BC%B5%E5%AD%90%5B%E9%87%8D%E8%A4%87%5D%E3%82%92%E9%99%A4%E3%81%8F%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E7%A7%BB%E5%8B%95%E3%81%99%E3%82%8B.png)
私は、ダウンロードから /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.txt
test2.txt
.tar.gz
cd ~/Xtest
mv !(test.tar.gz) ~/Xtest2
を除くすべてのコンテンツはフォルダーtest.tar.gz
に移動されますXtest2
。