删除保留包含文件的父文件夹?

Hom*_*ith 8 filesystem

有没有可能,如果我有这个:

/folder1/folder2/folder3
/folder1/folder2/file1.txt
Run Code Online (Sandbox Code Playgroud)

我可以删除 folder2 但保留其内容吗?

所以结果看起来像:

/folder1/folder3
/folder1/file1.txt
Run Code Online (Sandbox Code Playgroud)

Rin*_*ind 16

cd /folder1/folder2/
mv * ../
cd ../
Run Code Online (Sandbox Code Playgroud)

现在检查文件夹的内容:

ls
Run Code Online (Sandbox Code Playgroud)

然后使用此命令删除目录。它是完全安全的,因为它只会删除空目录:

rmdir folder2/
Run Code Online (Sandbox Code Playgroud)


Bra*_*iam 7

我认为您实际上不需要删除某些内容……只需将其移开即可。

mv  /folder1/folder2/*  /folder1/
rmdir /folder1/folder2/
Run Code Online (Sandbox Code Playgroud)

第一个命令将内容移动到父目录,如果目录为空,第二个命令将删除该目录。这不会移动隐藏/点文件。如果您还想移动隐藏文件,则需要:

mv  /folder1/folder2/{*,.*}  /folder1/
rmdir /folder1/folder2/
Run Code Online (Sandbox Code Playgroud)

或在 bash 中使用 dotglob 选项。如果你没有点文件,它会导致no matches found: dir1/dir2/.*bash 并且命令会失败。你也可以忽略:

mv: cannot move ‘folder1/folder2/..’ to ‘folder1/..’: Device or resource busy
Run Code Online (Sandbox Code Playgroud)

由于 bash 传递...mv.