移動除擴展名之外的所有檔案

移動除擴展名之外的所有檔案

我已將 tar.bz2 從我的下載移至 /usr/src,我喜歡將系統上安裝的所有內容放在此處。現在我提取了該文件,我想將其內容移至 /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和等test.txttest2.txt以及一個空資料夾“Xtest2”,我們要在其中移動除此之外的所有檔案.tar.gz

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

除此之外的所有內容test.tar.gz都將移動到Xtest2資料夾中。

相關內容