あるディレクトリから別のディレクトリに全体ではなく一部のファイルを移動する方法は?

あるディレクトリから別のディレクトリに全体ではなく一部のファイルを移動する方法は?

あるディレクトリから別のディレクトリにファイルを移動する必要があります。しかし、いくつかの問題もあります。私のファイル名のパターンは次のとおりです。

  apple.0, apple.<n>, n -> {0,1,2,3 ...~ }

mv apple.*常にアクティブなapple.0を維持する必要があるため、動作しません。

移動方法(この場合はapple.0を保持)

答え1

bashを使用している場合は、次のものが利用可能でなければなりません。

mv apple.[^0]* /other/directory/

拡張子がゼロで始まらないすべてのファイルが移動されます([]の先頭の「^」はbashの「no」を意味します)。エンディングに文字が1つしかないと確信している場合は、次のものを使用することもできます。

mv apple.[^0] /other/directory/

数字で終わるファイルのみを確認する必要がある場合は、次のものを使用できます。

shopt -s extglob
mv apple.@([1-9])*([0-9]) /other/directory/

しかし、これはapple.01または同様のものと一致しません...

最後に、数字で終わるすべてのリンゴファイルをインポートする必要があります。

shopt -s extglob
mv apple.*([1-9]|[0-9]+([0-9])) /other/directory/

答え2

bashがあり、そのようなファイルの一致に興味がない場合は、apple.not-a-number次のことを試してください。

shopt -s extglob
mv apple.!(0) /new/directory

答え3

必要に応じて移動するファイルと移動しないファイルを指定してください。

find /source/directory -maxdepth 1 -name "apple.*" ! -name "apple.0" -exec mv {} /new/directory \;

関連情報