cpコマンドを使用して、.txt、.cpp、および.h拡張子で終わらないフォルダ内のすべてのファイルを別のフォルダに移動する必要があります。
これを行う組み込み方法はありますか?それともスクリプトを書く必要がありますか?
答え1
それはすべて必要な堅牢性に依存します。これらのアイデアのいくつか(-print0など)は、すべてのシステムで使用できないため、YMMVです。
迅速かつ一度に少数のファイルが必要です。
mkdir .tmp
mv *.txt *.cpp *.h .tmp
mv * /separate_folder/
mv .tmp/* .
rmdir .tmp
もちろんハッキングですが、I/Oを取らず数秒しかかからず、移植性に優れています。
多くのファイルを処理する場合:
find . -maxdepth 1 -type f ! -name '*.txt' ! -name '*.cpp' ! -name '*.h' -print0 | xargs -0 mv -t /separate_folder/
ファイル名にスペースやその他の奇妙な文字が含まれていない場合は、おそらくおよびを省略することができます-print0
(-0
したがってデフォルト-print
のロジックに依存します)。
バッシュを使用する場合
GLOBIGNORE
!(pattern-list)
「パターンに一致するファイル名のセットを制限する」および「与えられたパターンの1つを除くすべての項目に一致する」変数については、Bashのマニュアルページを参照してください。