![ディレクトリ以外のファイルだけを移動しますか? [コピー]](https://linux33.com/image/98809/%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E4%BB%A5%E5%A4%96%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A0%E3%81%91%E3%82%92%E7%A7%BB%E5%8B%95%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
フォルダ内のすべてのファイル(フォルダを除く)を別のディレクトリに移動したいと思います。
私はこのコマンドを使ってきました:
find . -maxdepth 1 -type f -exec mv {} destination_folder \;
しかし、私は "exe_"で始まるファイルを除くすべてのファイルを移動したいので、次のことを試しました。
find . -maxdepth 1 -type f -exec mv !(exe_*) part1a_si_atom-exp001 \;
しかし、今ではディレクトリも移動します。どうですか?
答え1
!(exe_*)
find コマンドを実行する前に、シェルによって解釈され拡張されます。代わりに、この-name
フラグを使用して次を見つけてください。
find . -maxdepth 1 -type f -not -name 'exe_*' -exec mv {} destination_folder \;
また、オーバーヘッドを減らすために、コマンド出口として+
代わりに使用することをお勧めします。;
-exec