find . -mindepth 2 -type f -name '*' |
perl -l000ne 'print $_; s/\//-/g; s/^\.-/.\// and print' |
xargs -0n2 mv
Примечание: это не будет работать на имя файла, которые содержат \n
.
Это, конечно, только перемещает тип f
файлы...
Единственные столкновения имени были бы из файлов, существующих ранее в pwd
Протестированный с этим основным подмножеством
rm -fr junk
rm -f junk*hello*
mkdir -p junk/junkier/junkiest
touch 'hello hello'
touch 'junk/hello hello'
touch 'junk/junkier/hello hello'
touch 'junk/junkier/junkiest/hello hello'
Получающийся в
./hello hello
./junk-hello hello
./junk-junkier-hello hello
./junk-junkier-junkiest-hello hello
Решение, кажется, для ожидания некоторого времени перед действиями! У меня нет абсолютно никакой идеи, почему это (комментарии, объяснения и приветствующееся понимание), но следующие работы сценария теперь для меня:
#!/bin/bash
MYPWD="mypassword"
expect -c '
spawn zipcloak test.upd
expect "*Enter password*"
sleep 1
send "'"$MYPWD"'\r"
sleep 1
expect "*Verify password*"
sleep 1
send "'"$MYPWD"'\r"
sleep 1
'
Первый пример в вопросе работал на меня.
!/bin/bash
MYPWD="mypassword"
expect -c '
spawn zipcloak test.upd
expect {
"*Enter password*" { send "'"$MYPWD"'\r"
exp_continue
}
"*Verify password*" { send "'"$MYPWD"'\r"
exp_continue
}
}'
Хотя второе не сделало. Попробуйте его снова, возможно, Вы где, запустив неправильный скрипт. Это часто происходит со мной: Интересно, почему это не работает, но я запускаю неправильный скрипт.
zipcloak
или expect
, или некоторые библиотеки отличаются? Я имею дважды - и трижды проверенный для запущения скрипта ТОЧНО, как это! Кроме того, каждый раз файл как ziSvbYhy
создается в каталоге (различные имена).
– Alex
26.11.2013, 08:24
zipcloak
вручную; также, чтобы видеть, как использовать его.
– Alex
26.11.2013, 11:51
Моя интерпретация заключается в том, что ответы от Alex и ctrl -alt -delor не ожидают должным образом завершения процесса zipcloak и, следовательно, склонны оставлять zip-файл незашифрованным (и оставлять временный файл с именем, например zimfwtpJ
позади ). Таким образом, их код работает для небольших zip-файлов, но не работает для больших.
Вот мое решение:
#!/bin/bash
MYPWD="mypassword"
expect -c '
set timeout -1
spawn zipcloak test.upd
expect "*Enter password*"
send "'"$MYPWD"'\r"
expect "*Verify password*"
send "'"$MYPWD"'\r"
expect eof
'
sleep
s послеsend
s? – ctrl-alt-delor 26.11.2013, 11:27sleep
s после двухsend
. Иначе zipfile не шифруется. – Alex 26.11.2013, 11:51