Команда Unix Copy - PullRequest
       18

Команда Unix Copy

0 голосов
/ 28 мая 2018

Я изучаю Unix, и у меня возникли сомнения, которые могут показаться глупыми, но стреляю в них.

Я создал каталог, назовем его dir1 и создал подкаталог dir1 с именем dir2dir1 я также создал несколько файлов, таких как f1, f2, f3, f4, f5, f6, f7, f8, f9.

Теперь, если мне нужно скопировать все файлы dir1 в dir2.Я попробовал эту команду

cp f* ./dir2

, и она сработала.

Что теперь, если я не знаю имя какого-либо файла и хочу скопировать все файлы dir1 в dir2,Я попытался использовать команду find, но она не работает:

find . -type f | xargs cp

Я также попробовал эту команду:

cp * ./dir2 

Помогите мне;)

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Насколько я понимаю, ваша файловая структура выглядит следующим образом?

dir1/
    dir2/
    f1
    f2
    f3

Если вы хотите сделать простую копию всех файлов от dir1 до dir2, вы можете просто сделать следующее:

cp dir1/* dir1/dir2/.

Это автоматически игнорирует каталоги, так как вы не используете флаг -r (рекурсивный).

Если вы хотите отключить сообщение об ошибке, вы можете перенаправить STDERR на /dev/null.

cp dir1/* dir1/dir2/. 2>/dev/null
0 голосов
/ 28 мая 2018

первое, что приходит мне в голову, это сделать цикл for.скопировать все файлы, пропустить каталоги.

for in in $(ls -l|grep -v ^d|awk '{print $9}'); do cp $i dir2; done

сделать то же самое, используя find (более продвинутый, но более чистый код)

find . -type f | xargs -I '{}' mv '{}' dir2
...