フォルダーの内容を親フォルダーに移動する-Linuxコマンドライン


18

多くのファイルを含むfolderBを含むfolderAがあります。folderBを削除したいのですが、その内容は削除しません。それらのコンテンツをfolderAの内部に配置します。コマンドラインでこれを達成するにはどうすればよいですか?

回答:


28
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB

1
mv folderB / *。?ドットは何ですか?
NewLinuxUser

8
ドットファイル(名前が。で始まるファイル)には注意してください。これらのファイルは含まれません。やるmv folderB/.* .だけでなく、それらを移動すること。@NewLinuxUser、あなたの質問のドットは、作業ディレクトリ(この場合、folderA)のエイリアスです。
ブライアン

1
これはfolderB/folderB存在する場合は失敗するため、スクリプトで使用する場合は注意してください。
フィリポ

1
これfolderBは、非常に多くのファイルが含まれている場合にも失敗します。あなたは、表示されますbash: /bin/mv: Argument list too longので、使用の*。それはケースの使用ならmvとの組み合わせでfind@amphetamachineで述べたように、またはでfor loop
ハビエル・デ・ラ・ロサ

2

素早い回答:

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"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.