画像(png、bmp、jpg)と拡張子のないファイルを含むフォルダがあります。
拡張子なしでファイルのみを移動する方法がわかりません。すべてランダムに番号付けされたファイルです。
答え1
バッシュと
shopt -s extglob
mv -- !(*.jpg|*.png|*.bmp) targetdir/
答え2
否定のためにksh拡張glob演算子を使用してください!(...)
。したがってksh
、zsh -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