Ваши закомментированные вызовы работают для приложений, поддерживающих уведомления о запуске — на самом деле пример «Запустить iceweasel в рабочей области 3 (один раз)» в руководстве пользователя имеет почти такой же exec
команда:
exec --no-startup-id i3-msg 'workspace 3; exec iceweasel; workspace 1'
Однако Atom , похоже, не поддерживает уведомления о запуске, поэтому вам нужно продолжать использовать метод assign
.
find /root -maxdepth 6 -mindepth 6 -type d | awk -F \/ '{ print "mv "$0" "$1"/"$2"/"$3"/"$6 }' | sh
Используйте команду find, уделяя особое внимание максимальной и минимальной глубине каталогов, затем возьмите листинг и проанализируйте его с помощью awk, чтобы создать команду mv, которую мы можем выполнить с помощью sh. Удалите «| sh» для проверки перед добавлением для выполнения.
Поскольку файлы должны располагаться в разных каталогах, вам нужно запустить mv
несколько раз, по крайней мере один раз для каждого целевого каталога. Вы можете сделать это, запустив mv
в цикле for .
for x in /root/*
do
mv -i "$x"/*/*/*/* "$x"
done
Тело цикла (команда mv
)выполняется для каждой записи в каталоге /root
по очереди. При каждом выполнении тела цикла "$x"
заменяется путем /root/subN
.Команда mv -i "$x"/*/*/*/* "$x"
перемещает файл типа /root/sub1/aaaa/bbbb/cccc/dddd
в каталог /root/sub1
, т.е. файл перемещается в /root/sub1/dddd
.
С опцией -i
, mv
спросит, существует ли файл назначения, что может произойти, если у вас есть, например. как /root/sub1/aaa1/bbb/ccc/ddd
, так и /root/sub1/aaa2/bbb/ccc/ddd
.