回答:
コマンド
mv !(new) new
トリックを行う必要があります。動作しない場合は、shopt -s extglob最初に実行してください。
また、隠しファイル/ディレクトリ(ドットで始まるもの)を移動するには、shopt -s dotglob最初に実行します。
したがって、要約すると:
shopt -s extglob dotglob
mv !(new) new
shopt -u dotglob
(dotglob悪い驚きを避けるために設定を解除する方が常に良いです)。
!(something)何ですか?
dev現在の場所に移動しようとすると、実行する必要がありますmv !(dev) devか?私が得る-bash: !: event not found
setopt extendedglobzshで拡張グロブモードを設定します。^は除外記号であるためmv ^new new、トリックも行います。そして、あなたが使用できるのzshに設定されたすべてのオプションを確認しsetopt、あなたが行うことができ、拡張グロブモードを無効にするにはunsetopt extendedglob
私はこのようなものを見つけましたが、理解するのが少し簡単で、あなたにとってもうまくいくかもしれません:
ls | grep -v new | xargs mv -t new
上記のソリューションに説明を追加します。
マニュアルページから:
mv -t
-t, --target-directory=DIRECTORY
move all SOURCE arguments into DIRECTORY
grep -v
-v, --invert-match
Invert the sense of matching, to select non-matching lines.
ステップごとに説明:
ls 現在のディレクトリ内のファイルをリストしますgrep -v new パイプされたものを返しますnewxargs mv -t newパイプされたファイルをgrep -vターゲットディレクトリに移動しますmv: illegal option -- t。これは私が使用しているからzshですか?
mv(mvのバージョンは私が使用していたものとは異なることを意味します)あなたは何のOSを使用していますか?この答えを書いたとき、Linuxディストリビューションcentosを使用していたと思いbashます。
mv: illegal option -- tで、osxのmvには-tオプションがないため、同じエラーが発生します。
zshしていますので、おそらくOSです。明確にしてくれてありがとう!
フォルダーからすべてのファイルをそのサブフォルダーの1つに移動する場合は、次のコマンドを使用できます。
find /myuser/downloads/ -type d -name 'new' -prune -type f | xargs mv -t /myuser/downloads/new
すべてのファイルを検索し、それらをサブフォルダーに移動します。
@waltinator:の-type d -name 'new' -pruneトラバーサルを防ぐために追加されました/myuser/downloads/new。
newし、このコマンドを試してみました、私が手にmv: missing file operandしてTry 'mv --help' for more information
この代替プロセスを試すことができます-パスに留まる
/myuser/downloads/
しかし、代わりに、最初に作成する/myuser/downloads/new/ディレクトリを、代わりにフォルダを作成する/myuser/コマンドで、ディレクトリmkdir ../new、その後にすべてのファイルを移動downloadsするnewと、最終的には移動newにdownloads。/myuser/downloads/次のコマンドを使用して、パス内で1行でこれを実行できます。
mkdir ../new && mv * ../new && mv ../new ../downloads
この場合、newのパスと同じレベルにあるため、ファイル/フォルダーの「フィルタリング」を心配する必要はありません。downloadsすべてをdownloadsに移動してからnew、newダウンロードに移動することができます。
しかし、あなたはすでにサブフォルダが持っている場合newに作成され、心配しないで、別のものを作成する必要はありません-ちょうど変更mkdir最初の左側にあるコマンド&&に上記のコマンドでmv押して、コマンドをnewにアップ道; あなたがまだいる間、つまり、/myuser/downloads/あなたが変更することができますmkdir ../newにmv new ..。次に、new[パス内の/myuser/downloads/new/] サブフォルダー/myuser/new/がと同じレベルでにプッシュされ、/myuser/downloads/上記のように残りのコマンドを実行できます。すべて一緒に、パスから始めます/myuser/downloads/:
mv new .. && mv * ../new && mv ../new ../downloads
そして、「ダウンロードフォルダー内のすべてのファイルとフォルダー/サブフォルダーをサブフォルダー[ new]に移動する」ことを望んでいたので、完了です!あなたは、移動したいと考えていました場合にのみ、ファイル(または唯一のフォルダをまたは[全粒状物の動きを挿入])、その後、次のようなことができ、「フィルタ」のオブジェクト、他のコマンドを使用する必要があると思いますgrep。ただし、上記のコマンドで十分です。
mv * new、「新しいものから新しいものへと移動することはできません」またはそれに似たものが鳴ります。おそらくmv -i * newあなたは上書きを防ぎます。