Если Ваш входной файл содержит строку 'c/d e/f'
и Вы хотите обработать объект c/d e/f
(без кавычек), затем можно искать xargs
. Его формат ввода является разделенным пробелом списком строк с символами '
и "
разграничивание литеральных строк. Кроме того, \
заставляет следующий символ интерпретироваться буквально, но только вне строки. Например, вот входной файл:
how\'dy 'hello world' aaa\
bbb
Объекты в этом файле how'dy
, hello world
и aaabbb
(где 
символ новой строки).
Только действительно необходимо взять владение каталогов. Обычные файлы будут заботиться о себе в следующий раз, когда Вы изменяете их, символьные ссылки и каналы не имеют значения, и я собираюсь предположить, что нет никаких устройств или других экзотических типов.
Можно сделать рекурсивную копию каталогов, но сделать жесткие ссылки из регулярных файлов вместо того, чтобы копировать их. С GNU coreutils (Linux, Cygwin):
cp -al A B
Каждый регулярный файл A/dir/file
трудно связан как B/dir/file
. Можно затем удалить исходное дерево.
Если у Вас нет GNU coreutils, можно использовать rsync вместо этого:
cd A
rsync -a --link-dest=$PWD . ../B
Чтобы удостовериться, что удаление A на самом деле не удалит файла, проверьте, что все регулярные файлы имеют количество жесткой ссылки по крайней мере 2 — следующая команда ничего не должна производить:
find A -type f -links 1
Можно взять владение как это:
$ mv A A.old
$ mkdir A
$ mv A.old/* A.old/.[!.]* A.old/..?* A/
$ rmdir A.old
mv
не имеет никакого эффекта на владение, но mkdir A
имеет. Новый созданный каталог будет принадлежать пользователю
– Ulrich Dangel
30.07.2012, 09:34
Любой способ сделать это, которое не включает копирование, собирается не столкнуться ни с каким-chown правилом. Попросите базироваться приятно, чтобы сделать это для Вас.
Если Вы амбициозны, Вы могли бы записать новую подобную chown утилиту, разработанную для setuid-корневой установки, которая делает ее собственные проверки безопасности и решает на основе более свободного правила, должен ли показанный быть позволен.
Если это главным образом о дисковом пространстве, Вам только нужен инструмент, который чередует CP с комнатой...
cp --sparse=always
– Janus Troelsen
30.07.2012, 23:16