-1

Предположим, у меня есть следующий исходный каталог:

source/
    subdir1/file1
    subdir1/file2
    subdir2/file3
    subdir3/file4

И целевой каталог:

target
    subdir1/file5
    subdir2/file6
    subdir4/file7

Я хотел бы переместить (но на самом деле не копировать и не удалять) содержимое исходных подкаталогов в правильные целевые подкаталоги, чтобы результат выглядел следующим образом:

target
    subdir1/file1
    subdir1/file2    
    subdir1/file5
    subdir2/file6
    subdir2/file3
    subdir3/file4
    subdir4/file7

Есть ли какая-нибудь команда Linux, чтобы сделать это, или я должен написать скрипт сам?

1 ответ1

0

Вы можете использовать rsync для этого.

rsync -a sourcedir/ destdir/ --remove-sent-files --ignore-existing 

Например:

mtak@frisbee:~$ find test test2
test
test/subdir1
test/subdir1/file2
test/subdir1/file1
test/subdir2
test/subdir2/file2
test/subdir2/file1
test2
test2/subdir1
test2/subdir1/file3
test2/subdir1/file4
test2/subdir2
test2/subdir2/file3
test2/subdir2/file4

mtak@frisbee:~$ rsync -a test/ test2/ --remove-sent-files --ignore-existing --whole-file 

mtak@frisbee:~$ find test
test
test/subdir1
test/subdir2
mtak@frisbee:~$ find test2
test2
test2/subdir1
test2/subdir1/file2
test2/subdir1/file1
test2/subdir1/file3
test2/subdir1/file4
test2/subdir2
test2/subdir2/file2
test2/subdir2/file1
test2/subdir2/file3
test2/subdir2/file4

Это немного хак, потому что сначала он скопирует файл, а затем удалит исходный файл (поэтому он не похож на mv).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .