我创建了一个名为 的文件夹(目录) Parent
,其中包含多个文件(即file1
file2
... file100
)和子目录(Folder2
等Folder3
),以及一个名为 的特定子目录,Child1
该子目录本身可能包含文件和文件夹。现在,我想将 的所有内容复制Parent
到Child1
文件夹中Child1
。
'Child1' 的最终内容应该是这样的:
Old content of Child1
file1 ... file100 + Folder2 Folder3 + etc.
我怎样才能实现这个目标?
答案1
假设你使用 bash 作为交互式 shell,你可以启用外接球它允许您指定“除这些文件之外的所有文件”。
shopt -s extglob
cd Parent
cp !(Child1) Child1/
答案2
三个出色的答案展示了 Linux 的灵活性。熟悉基本的命令行操作总是一个好主意。就我个人而言,我更喜欢混合方法,并且我会在可用时尝试使用 mc(午夜指挥官)。
sudo apt-get install mc
会帮你搞定。像我这样的幸存暴龙可能会注意到它与 DOS 时代的诺顿指挥官有相似之处。它的操作非常直观。你有两个面板。你可以用 TAB 在它们之间切换。有 Fn 键快捷键用于基本操作,如查看、编辑、复制、移动、重命名、删除等。
就您而言,您所要做的就是在终端窗口中输入 mc,然后在一个面板中导航到父文件夹,在另一个面板中导航到子文件夹。然后选择父面板并按 + 键,然后按 Enter 键。这将选择面板中的所有文件和文件夹。使用箭头键转到 Child1 文件夹顶部并按 Ins 键。这将取消选择该文件夹(Ins 键切换项目的选择状态。)现在按 F5,所有选定的内容将被复制到另一个面板(位于 Child1 文件夹内)。
我提供这些信息只是为了完整性,并进一步展示可用的各种解决方案。无论如何,请继续学习基本的 Linux 命令及其变体。您可以随时在任何系统上使用它们。
答案3
尝试 :
cd [无论父母在何处撒谎]
cp ./* ./Child1/
将会有一条消息提示cp 省略了“Child1”目录。
答案4
rsync
有一个使用选项排除文件或目录的选项--exclude
。
所以在这种情况下我认为rsync
这将是一个不错的选择。
mkdir -p Child1; rsync -av --progress ./* Child1 --exclude Child1