将文件从目录复制到子目录(不包括子目录本身)

将文件从目录复制到子目录(不包括子目录本身)

我创建了一个名为 的文件夹(目录) Parent,其中包含多个文件(即file1 file2... file100)和子目录(Folder2Folder3),以及一个名为 的特定子目录,Child1该子目录本身可能包含文件和文件夹。现在,我想将 的所有内容复制ParentChild1文件夹中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

相关内容