Я пойду с Gilles и укажу на Вас на Унисон, как предложено hasen j. Унисоном был Dropbox за 20 лет до Dropbox. Качайте основательный код, который много людей (самостоятельно включенный) использует каждый день - очень стоящий для изучения. Однако, join
потребности вся реклама это может добраться :)
Это - только половина ответа, но я должен возвратиться к работе :)
В основном я хотел продемонстрировать малоизвестное join
утилита, которая делает просто что: соединения две таблицы на некотором поле.
Во-первых, настройте тестовый сценарий включая имена файлов с пробелами:
for d in a b 'c c'; do mkdir -p "old/$d"; echo $RANDOM > "old/${d}/${d}.txt"; done
cp -r old new
(отредактируйте некоторые имена каталогов и/или имена файлов в new
).
Теперь, мы хотим создать карту: хеш-> имя файла для каждого каталога и затем использует join
подойти файлы с тем же хешем. Для генерации карты вставьте следующее makemap.sh
:
find "$1" -type f -exec md5 -r "{}" \; \
| sed "s/\([a-z0-9]*\) ${1}\/\(.*\)/\1 \"\2\"/" \
makemap.sh
выкладывает файл со строками формы, 'хешируйте "имя файла"', таким образом, мы просто присоединяемся на первом столбце:
join <(./makemap.sh 'old') <(./makemap.sh 'new') >moves.txt
Это генерирует moves.txt
который похож на это:
49787681dd7fcc685372784915855431 "a/a.txt" "bar/a.txt"
bfdaa3e91029d31610739d552ede0c26 "c c/c c.txt" "c c/c c.txt"
Следующий шаг должен был бы на самом деле сделать перемещения, но мои попытки застряли на заключении в кавычки... mv -i
и mkdir -p
должен прибыть удобный.
/usr/bin/gnome-session-save --kill
работы для меня на Fedora 15 Alpha с гномом как мой DE. Надежда, которая помогает.
X-сервер перестанет работать, если Вы уничтожите основной процесс сессии, и все другие X-клиенты умрут, когда они потеряют соединение с X-сервером.
Под Gnome (по крайней мере, в соответствии с Ubuntu 10.04), процесс сессии gnome-session
. Если Вы не используете настольную среду, процесс, который Вы хотите, является менеджером сеансов, или если Вы не работаете один, менеджер окон. Более точно процесс, который необходимо уничтожить, является первым клиентом, который соединился с X-сервером.
gdm
или kdm
уничтожить. Ваше объяснение того, почему можно было бы хотеть уничтожить менеджера по оформлению во-первых, привело меня к ответу, в котором я нуждался. Спасибо, чувак!! :D
– kittykittybangbang
23.11.2015, 20:46
Пока у Вас есть набор "DontZap" к "прочь" в Вашем xorg.conf, можно использовать клавишу Backspace высокого звука управления для уничтожения рабочего X-сервера. Я использовал это в ситуациях, когда X сред так испорчены, я не могу выполнить команду. Если все значительно втиснуто, Вы могли бы извлечь выгоду из использования Волшебных ключей Sysrq 'k' для уничтожения всех процессов в текущем VT, и если это действительно втиснуто, можно перезагрузить систему немного более чисто, чем твердое выключение питания. К сожалению, при тестировании составления композита WMs я делал это чаще, чем я хотел бы.