という特定のファイルを除いて、現在のディレクトリ内のすべてのファイルをでNewDir
終わるディレクトリに移動したいと思います。*.bam
special.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
サブディレクトリのファイルも検索できます。