Я собираюсь принять Ваш оба подключенные к Той же сети или Wi-Fi или Кабелем, я предложил бы ettercap, использовать человека отравления ARP в среднем нападении, которое в основном отправит весь сетевой трафик Вам включая беспроводную связь и затем на предполагаемом получателе, в ettercap Вы видите фактический tcp поток на экране, это имеет много плагинов, и можно создать собственное, я считаю, что это не к трудному к, затем исправляют правило изменить пакетную полезную нагрузку, однако поток, это сам может быть зашифровано и в той точке, можно застрять, поскольку это будет просто похоже на ерунду, Вы говорите, что это находится в простом тексте, таким образом, я предполагаю, что Вы уже должны сниффингового пакеты,
Я раньше использовал отслеживание в обратном порядке вполне в большой степени пара несколько лет назад для взламывания Wi-Fi, и я знаю, что ettercap идет там, я сделан некоторые видео на YouTube, показывающем, как использовать его для человека в средних нападениях, учетную запись называют поднятой битом или bitjacked, который я проверил бы, но я говорю по телефону, они могут помочь Вам с первой частью.
Не пытайтесь проанализировать find
вывод за исключением последнего средства. Важно понять, что в файловых системах Unix, имена файлов не являются строками (распространенное заблуждение), а скорее двоичные блобы, которые могут содержать любой символ кроме /
и нулевой символ. Парсинг имен файлов безопасно и правильно является действительно болью, что 99% времени, Вы просто захотите постараться не делать его в целом (просто выглядят на как волосатым sed
выражение в ответе @yarek и даже который не покрывает все случаи). К счастью в этом случае существует намного более простой подход:
find . -name '*(1).m4a' -execdir sh -c \
'for arg; do mv "$arg" "${arg%(1).m4a}".m4a; done' _ {} \+
На Debian и Ubuntu, я могу использовать rename 's/\(1\)//' *.m4a
решить Вашу проблему.
man rename
, но я на самом деле не имею rename
: -bash: rename: command not found
(which rename
ничего не показывает).
– hobbes3
11.05.2012, 22:10
man -a rename
находит переименовывают (2) - syscall и переименовывают (n) - команда TCL. Нет ни не переименовывают (1), ни сама утилита там.
– yrk
11.05.2012, 22:18
man -a rename
находит переименовывают (2) - syscall и переименовывают (n) - команда TCL. Нет ни не переименовывают (1), ни сама утилита там.
– yrk
11.05.2012, 22:18
rename
сценарий жемчуга, включенный с примерами, включенными в некоторые установки жемчуга, и пара дистрибутивов включает его в путь, потому что это - удобная команда. (@Hobbes, возможно, можно найти его в Интернете),
– Kevin
12.05.2012, 01:47
rename
сценарий жемчуга, включенный с примерами, включенными в некоторые установки жемчуга, и пара дистрибутивов включает его в путь, потому что это - удобная команда. (@Hobbes, возможно, можно найти его в Интернете),
– Kevin
12.05.2012, 01:47
rename
нормальный двоичный файл (не жемчуг). Однако другой протест состоит в том что не все версии rename
поддержка regexes. Версия, которую я имею, например, только, позволяет, Вы действительно направляете строковые замены, например, rename '(1)' '' *.m4a
– Patrick
12.05.2012, 02:13
rename
нормальный двоичный файл (не жемчуг). Однако другой протест состоит в том что не все версии rename
поддержка regexes. Версия, которую я имею, например, только, позволяет, Вы действительно направляете строковые замены, например, rename '(1)' '' *.m4a
– Patrick
12.05.2012, 02:13
rename
сценарий только установлен Debian и производными. Другие системы Linux имеют другое rename
утилита (показанный Patrick). OSX не имеет ни одного.
– Gilles 'SO- stop being evil'
12.05.2012, 02:30
rename
сценарий только установлен Debian и производными. Другие системы Linux имеют другое rename
утилита (показанный Patrick). OSX не имеет ни одного.
– Gilles 'SO- stop being evil'
12.05.2012, 02:30
В zsh, с помощью zmv:
autoload zmv # you can put this line in your .zshrc
zmv '(*)\(1\)(*)' '$1$2'
Во втором аргументе (новое имя), $1
и $2
обратитесь к заключенным в скобки группам (PATTERN)
в исходном шаблоне. Другой способ записать это переименование
zmv '(*)' '${1/\(1\)/}'
Следующий подход дает Вам способность предварительно просмотреть/сократить сгенерированные команды прежде, чем выполнить их, и это очень портативно: это должно работать не только над Mac, не только с ударом, и не только с GNU sed; даже в системах без find
(1) команда возможно заменить им с du
(1) без проблемы.
find . -name '*(1).m4a' |
sed 's/\(.*\)(1).m4a$/mv & \1.m4a/'
Если счастливый печатными командами, повторно выполненными с | sh -x
добавленный.
Если затронуто пробелами в именах файлов, добавьте другой s для выхода из всех пробелов:
find . -name '*(1).m4a' |
sed -e 's/ /\\ /g' -e 's/\(.*\)(1).m4a$/mv & \1.m4a/'
Если другие специальные символы ожидаются, это получает небольшой более хитрый бит:
find . -name '*(1).m4a' |
sed -e "s/'/'\\\\''/g" -e 's/\(.*\)(1).m4a$/mv '\''&'\'' '\''\1.m4a'\'/
Первая функция преобразовывает все '
в форму, таким образом, что они взяты буквально когда посреди '...'
- завершенная строка. Вторая функция генерирует команды mv, в аргументах которых включают '...'
.
(
, и все другие специальные символы) или добавляющие кавычки вокруг имени файла. Я пытался изменить Вашу команду, но я не мог выяснить, как добавить кавычки вокруг обоих имен файлов для mv
команда. Один из получающегося вывода от Вашей команды mv ./The Beatles - Let It Be (MFSL LP 1-109) 24-96 Vinyl Rip/01 Two Of Us(1).m4a ./The Beatles - Let It Be (MFSL LP 1-109) 24-96 Vinyl Rip/01 Two Of Us.m4a
. И если я выполняю ту команду, я добираюсь -bash: syntax error near unexpected token '('
.
– hobbes3
11.05.2012, 22:23
(
, и все другие специальные символы) или добавляющие кавычки вокруг имени файла. Я пытался изменить Вашу команду, но я не мог выяснить, как добавить кавычки вокруг обоих имен файлов для mv
команда. Один из получающегося вывода от Вашей команды mv ./The Beatles - Let It Be (MFSL LP 1-109) 24-96 Vinyl Rip/01 Two Of Us(1).m4a ./The Beatles - Let It Be (MFSL LP 1-109) 24-96 Vinyl Rip/01 Two Of Us.m4a
. И если я выполняю ту команду, я добираюсь -bash: syntax error near unexpected token '('
.
– hobbes3
11.05.2012, 22:23
e
команда после замены. Например, find . -name '*(1).m4a' | sed 's/\(.*\)(1).m4a$/mv & \1.m4a/e'
будет команда exexcute, не передавая по каналу к sh -x
.
– rush
11.05.2012, 23:39
Вот маленький сценарий, который делает это:
for var in `find . -type f -name "*(1).m4a"`; do
new=`echo $var | cut -d'(' -f1`;
mv $var $new.m4a;
done
`find ...`
– yrk
22.05.2012, 19:31
done
? – yrk 12.05.2012, 00:27sed
подход канала, это намного более безопасно. Еще легче читать, чем regex суп обратной косой черты, если Вы понимаете некоторые основные конструкции сценариев оболочки. – jw013 12.05.2012, 02:23$arg
переменная делает намного легче читать. – hobbes3 12.05.2012, 05:17find
вызовsh
с довольно портативным синтаксисом POSIX. Для получения дополнительной информации можно проверить раздел по Расширению Параметра, раздел по составным командам, который объясняетfor
цикл и POSIXfind
спецификация. В дополнение к тем ресурсам я был бы рад ответить на любые конкретные вопросы, которые Вы имеете. – jw013 13.05.2012, 00:46