将目录中的文件复制到另一个目录

将目录中的文件复制到另一个目录

我是 ubuntu 新手,我一直在阅读发布的内容,但对我来说不起作用,救命!!!我遗漏了一些东西,希望有人能帮忙。我正在尝试将文件从一个文件夹复制到另一个文件夹。当我这样做时,它会将所有文件夹复制到该文件夹​​中。问题是我不想复制所有文件夹,我只想将一个文件夹中的文件复制到另一个文件夹:

cp -a /home/troy/Downloads/ . /home/troy/.gs/

答案1

打开终端并运行:

find /home/troy/Downloads/ -type f -exec cp {} /home/troy/.gs/ \;

答案2

您可以使用这些命令将文件仅复制到任何特定目录

假设你想复制下面所有的文件/home/troy/Downloads/home/troy/.gs

首先访问/home/troy/Downloads并:

find . -type f | xargs -I '{}' cp {} /home/troy/.gs

如果您想复制任何特定文件,*.mp3那么您可以执行此命令:

find . -iname "*.mp3" -type f | xargs -I '{}' cp {} /home/troy/.gs

答案3

find是一个非常强大的命令,但我永远记不住如何使用它。

我意识到我一开始并不知道你的问题的答案,但我认为文件全局可能会有用,所以这就是我尝试的方法:

/tmp/askubuntu $ ls # notice no output because this directory is currently empty
/tmp/askubuntu $ mkdir src dest # create source and desination directories
/tmp/askubuntu $ ls # now we have the two directories we created
dest  src
/tmp/askubuntu $ cd src
/tmp/askubuntu/src $ ls # no files in src, yet
/tmp/askubuntu/src $ touch file-1 file-2 # create a couple of empty files
/tmp/askubuntu/src $ ls # now we can see the files that we created
file-1  file-2
/tmp/askubuntu/src $ mkdir dir-to-ignore # make a directory that we don't want to copy
/tmp/askubuntu/src $ ls -l # we can use 'ls -l' to view the files as well as their types. note the 'd' to the left of dir-to-ignore -- this says it is a directory
total 4
drwxr-xr-x 2 josh josh 4096 Oct 24 00:06 dir-to-ignore
-rw-r--r-- 1 josh josh    0 Oct 24 00:05 file-1
-rw-r--r-- 1 josh josh    0 Oct 24 00:05 file-2
/tmp/askubuntu/src $ cd ../dest/
/tmp/askubuntu/dest $ ls
/tmp/askubuntu/dest $ touch file-3 # make an empty file here too
/tmp/askubuntu/dest $ cd ../src/
/tmp/askubuntu/src $ ls
dir-to-ignore  file-1  file-2
/tmp/askubuntu/src $ cp * ../dest/ # copy all files from our current directory (* matches anything) to ../dest
cp: omitting directory ‘dir-to-ignore’
/tmp/askubuntu/src $ ls # our current directory is unchanged
dir-to-ignore  file-1  file-2
/tmp/askubuntu/src $ cd ../dest/
/tmp/askubuntu/dest $ ls # but we copied all of files we wanted, and nothing more
file-1  file-2  file-3

这样做的原因并不明显。如果我们给出了cp标志-r(所以cp -r * ../dest/),我们还会复制dir-to-ignore除其所有内容之外的内容。这是因为-r表示以递归方式复制目录(我们可以通过man cp在终端上输入来看到)。所以在你的情况下,这可能会变成cp -a /home/troy/Downloads/* /home/troy/.gs/。或者你可以省略-a

我并不认为依赖 cp 的这种略显奇怪的行为(不复制没有标记的目录-r,但也不会给出错误)是正确的做法。我的目标是说明如何尝试构建此问题的解决方案,并在此过程中说明一些命令。

也许你会觉得它有用,也许你不会,也许你已经知道了这一切。这只是我的一点看法。但无论如何,我认为知道事物如何/为什么运作并能够自己探索解决方案是件好事。

相关内容