
フォルダ内のすべてのファイル/ディレクトリをコピーしようとしていますが、他のすべてのファイルがそのフォルダ内にあるようにしたいので、1つのフォルダを除外したいと思います。以下のより良いデモのためのフォルダ構造があります。
- VideosFolder
L File1
L File2
L File3
L TutorialFolder
今はこんなにFile1
File2
File3
感動したいTutorialFolder
- VideosFolder
L TutorialFolder
L File1
L File2
L File3
このコマンドを試しました
mv ~/Desktop/VideosFolder/!(TutorialFolder) TutorialFolder
しかし、このエラーが発生しました。
mv: "/home/user/Desktop/VideosFolder/!(TutorialFolder)" を計算できません。そのファイルやディレクトリはありません。
有効になっていることを確認しましたが、shopt extglob
実際に有効になっています。だから私は何をすべきかわかりません。
答え1
君はただ走れるよ
mv * TutorialFolder/
そしてVideosFolder/
。これにより、すべてのファイルとディレクトリ(で始まらない.
)がに移動しますTutorialFolder/
。ディレクトリを独自に移動できないため、次のような警告メッセージが表示されることがあります。
mv: cannot move 'TutorialFolder' to a subdirectory of itself, 'TutorialFolder/TutorialFolder'
これは予想される現象であり、mv
まだ移動していないことを意味しますTutorialFolder
。
答え2
Rsyncコマンドを試してみてください。 Rsyncは、リモートシェルを介して2つの場所間でファイルとフォルダを同期する高速で多様なコマンドラインユーティリティです。
rsync -a --exclude 'TutorialFolder' ~/Desktop/VideosFolder/ ~/Desktop/VideosFolder/TutorialFolder/
答え3
他の答えはうまくいくが内部にあると仮定すると、エラーを発生させないよりクリーンなアプローチは次のとおりですVideosFolder
。
find . -maxdepth 1 ! \( -name TutorialFolder -o -name '.' \) -exec mv {} TutorialFolder/ \;
TutorialFolder
これにより、現在のディレクトリで、and .
(現在のディレクトリ自体)と名前の異なるすべてのファイルとディレクトリを見つけて、一緒に-exec
使用します。mv
TutorialFolder