回答:
コマンド
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 extendedglob
zshで拡張グロブモードを設定します。^
は除外記号であるため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
あなたは上書きを防ぎます。