多くのファイルを含むfolderBを含むfolderAがあります。folderBを削除したいのですが、その内容は削除しません。それらのコンテンツをfolderAの内部に配置します。コマンドラインでこれを達成するにはどうすればよいですか?
多くのファイルを含むfolderBを含むfolderAがあります。folderBを削除したいのですが、その内容は削除しません。それらのコンテンツをfolderAの内部に配置します。コマンドラインでこれを達成するにはどうすればよいですか?
回答:
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB
mv folderB/.* .だけでなく、それらを移動すること。@NewLinuxUser、あなたの質問のドットは、作業ディレクトリ(この場合、folderA)のエイリアスです。
folderB/folderB存在する場合は失敗するため、スクリプトで使用する場合は注意してください。
folderBは、非常に多くのファイルが含まれている場合にも失敗します。あなたは、表示されますbash: /bin/mv: Argument list too longので、使用の*。それはケースの使用ならmvとの組み合わせでfind@amphetamachineで述べたように、またはでfor loop
素早い回答:
cd /path/to/folderA
find folderB -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir folderB
コードに強い答え:
cd /path/to/folderA
folderB_temp="$(mktemp -d -t folderB.XXXXXX)"
mv folderB "$folderB_temp"
find "$folderB_temp/folderB" -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir --parents --ignore-fail-on-non-empty "$folderB_temp/folderB"