Копировать файлы из одного каталога в другой

новичок в Ubuntu, и я продолжаю читать опубликованные материалы, но это не работает для меня, помогите !!! Я что-то упускаю, надеюсь, кто-то может помочь. Я пытаюсь скопировать файлы из одной папки в другую. когда я делаю это, он копирует все папки в папку. проблема в том, что мне не нужны копии всех папок, которые я просто хотел, чтобы файлы в одной папке копировались в другую папку:

cp -a /home/troy/Downloads/ . /home/troy/.gs/
3
задан 24 October 2013 в 05:58

3 ответа

Открыть терминал и запустить:

find /home/troy/Downloads/ -type f -exec cp {} /home/troy/.gs/ \;
0
ответ дан 24 October 2013 в 05:58

Вы можете использовать эти команды для копирования только файлов в любой конкретный каталог

Предположим, что вы хотите скопировать все файлы с /home/troy/Downloads по /home/troy/.gs, затем:

[ 118] Сначала перейдите к /home/troy/Downloads и:

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

Если вы хотите скопировать какой-либо конкретный файл, скажем *.mp3, то вы можете выполнить эту команду:

find . -iname "*.mp3" -type f | xargs -I '{}' cp {} /home/troy/.gs
0
ответ дан 24 October 2013 в 05:58

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, но и не выдавать ошибку) - это правильно. Моей целью было проиллюстрировать, как я мог бы попытаться построить решение этой проблемы, и проиллюстрировать несколько команд по пути.

Может быть, вы найдете это полезным, может быть, вы не будете, может быть, вы уже знаете все это. Просто мои два цента. Но независимо от этого, я думаю, что приятно знать, как / почему все работает, и иметь возможность самостоятельно искать решения.

0
ответ дан 24 October 2013 в 05:58

Другие вопросы по тегам:

Похожие вопросы: