Использование 'cp' и сохранение атрибутов каталога, но не копирование его дочерних элементов - PullRequest
1 голос
/ 10 декабря 2011

Я делаю программу синхронизации файлов. Чтобы повысить эффективность синхронизации, у меня есть синхронизация / копирование только новых файлов / папок из источника. В любом случае, когда я копирую каталоги в синхронизацию, я использую 'cp pR itemName , потому что он сохраняет атрибуты каталога и значка (если он есть). Но, к сожалению, он также копирует все содержащиеся в этом каталоге файлы ... Я не хочу, чтобы дети копировались (за исключением некоторых невидимых файлов), я хочу копировать по одному элементу за раз. Есть ли способ, которым я могу программно копировать каталог сам по себе (не включая его дочерние файлы), но при этом сохраняя его атрибуты (например, Дата создания и значок)?

1 Ответ

0 голосов
/ 13 декабря 2011

Вы хотите использовать rsync.Rsync создает список всех файлов и копирует только те, которые были изменены.Это действительно быстро.я делаю

rsync -avzr filesIwant WhereItShouldGo

, но, чтобы ответить на ваш вопрос, вы можете перечислить файлы и исключить тот, который вам не нужен, с помощью grep и используя xargs, запустите ваше действие.Допустим, вы запустили ls, и это то, что вы получили

#:~ cy$ ls
BackEnd         Downloads       Pictures
CSC 130         Library         Public
Checkbook.java      Movies          Site and Code
Desktop         Music           Sites
Documents       NetBeansProjects

, и допустим, что вам нужно все, но не все, что вы можете сделать в папке музыки или в папке фильмов:1009 * обратите внимание, фильмы и музыка не были перечислены.Ну, теперь вы можете запустить Xargs и сделать действие.Поскольку я не хочу ничего удалять, я не собираюсь этого делать, но это будет выглядеть так:

#:~ cy$ ls | grep -v Music | grep -v Movies| xargs -I xx cp xx  ToSomePlace

, команда -I для xargs берет ввод из последней команды и дает ей псевдонимв моем случае "xx", чтобы вы могли вызывать команды в xx, зная, что они являются элементом последней команды.Надеюсь, что это помогло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...