ファイル名と一致するファイルを除くすべてのファイルを移動する

ファイル名と一致するファイルを除くすべてのファイルを移動する

という特定のファイルを除いて、現在のディレクトリ内のすべてのファイルをでNewDir終わるディレクトリに移動したいと思います。*.bamspecial.file.bam

このコマンドが見つかりました削除すべてのファイルがありますが、方法がわかりません。移動する削除する代わりに、次の操作を行います。

find . ! -name 'special.file.bam' -type f -exec rm -f {} +

ベストアンサー1

シェルがbashシェルの場合は、拡張グローバル変数を有効にして次のことができます。

shopt -s extglob
mv -- !(special.file).bam temp/

エラー抑制:"bash: /usr/bin/mv: Argument list too long「特定のパターンに一致するファイルが多すぎる場合は、次の手順を実行してください。

for file in !(special.file).bam; do
    mv -- "$file" temp/
done

または、findコマンドの置換と移植性を使用します。

find . -path './*' -prune -type f -name '*.bam' ! -name 'special.file.bam' \
    -exec sh -c 'for file; do mv "$file" temp/; done' sh_mv {} +

セクションを削除すると、-path './*' -pruneサブディレクトリのファイルも検索できます。

おすすめ記事