mvを使用して拡張子なしでファイルを移動する

mvを使用して拡張子なしでファイルを移動する

画像(png、bmp、jpg)と拡張子のないファイルを含むフォルダがあります。

拡張子なしでファイルのみを移動する方法がわかりません。すべてランダムに番号付けされたファイルです。

答え1

バッシュと

shopt -s extglob
mv -- !(*.jpg|*.png|*.bmp) targetdir/

答え2

否定のためにksh拡張glob演算子を使用してください!(...)。したがってkshzsh -o kshglobまたはbash -O extglob

rm -- !(*.*) /dest

名前にドットが含まれていないファイルを移動します(Except以外のシェルでは、ファイルにドットが含まれていてもそのファイルがzshない場合は、名前付きファイルを移動できます!(*.*))。

否定するには、zsh拡張グローバル演算子を使用してください。^zsh -o extendedglob

rm -- ^*.* /dest

上記のすべての場合、隠しファイルは移動されません。まず、名前にドットが含まれているためです(ドットで始まります)。また、glob自体がリテラルで始まらない限り、隠しファイルがglobから除外されるためです.

ファイルを移動したいが.foo移動したくない場合は、.foo.png次のことができます。

mv -- ^?*.*(D) /dest # with zsh -o extended-glob

mv -- !(?*.*) /dest # with bash -O extglob -O dotglob
                    # or   zsh -o kshglob -o dotglob -o nobareglobqual
                    # or   env FIGNORE='@(.|..)' ksh93

mv -- @(.|)+([^.]) /dest # with bash -O extglob or AT&T ksh

関連情報