将文件夹内容移动到父文件夹中-Linux命令行


18

我有一个folderA,其中包含的文件夹B中包含很多文件。我想摆脱folderB,但不摆脱它的内容。我希望这些内容在folderA内。如何在命令行上完成此操作?

Answers:


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

1
mv文件夹B / *。?点是什么?
NewLinuxUser 2010年

8
注意点文件(名称以。开头的文件),因为这将不包括这些文件。不要mv folderB/.* .将它们移动为好。@NewLinuxUser,问题中的点是工作目录的别名(在本例中为folderA)。
布赖恩2010年

1
如果folderB/folderB存在,它将失败,因此请注意在脚本中使用它。
filipos '16

1
如果folderB包含大量文件,这也将失败。您会bash: /bin/mv: Argument list too long因为使用看到*。如果是这种情况mv,请与find@amphetamachine所述结合使用,或与for loop
Javier de la Rosa

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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.