Если можно управлять им, я нахожу, что лучший способ иметь дело с материалом как это состоит в том, чтобы использовать VPN. Тем путем единственной вещью, для которой они могут предназначаться, является VPN. Не должно быть никаких сервисов, открытых для мира в целом, кроме тех, которые необходимы, чтобы "все" получили доступ, такие как Ваш веб-сервер. Все остальное должно быть заблокировано брандмауэром. Теперь единственной вещью, которую действительно необходимо взволновать по поводу обеспечения, является VPN. Если Вы можете, получить статический IP для компьютеров, Вы управляете своими серверами от и блокируете Вашу VPN вниз к тому определенному IP-адресу. Это - действительно единственный способ мешать людям пробовать к "в лоб" пароли.
Вы могли всегда делать:
ls *.tgz | grep -v Broad_hapmap3_r2_Affy6_cels_excluded.tgz | xargs -n1 tar zxvf
Но я подозреваю, что кто-то отправит более чистый путь, действительно делают это непосредственно от оболочки удара, не нуждаясь в grep там.
В zsh:
setopt extended_glob
for z in *.tgz~Broad_hapmap3_r2_Affy6_cels_excluded.tgz; do tar xzf $z; done
Другая возможность в zsh:
setopt extended_glob
zargs -n 1 -- *.tgz~Broad_hapmap3_r2_Affy6_cels_excluded.tgz -- tar xzf
В ksh (но не удар или zsh, поскольку они не поддерживают и шаблоны):
for z in @(*.tgz&!(Broad_hapmap3_r2_Affy6_cels_excluded.tgz); do tar xzf "$z"; done
Иначе в ksh:
( FIGNORE=Broad_hapmap3_r2_Affy6_cels_excluded.tgz;
for z in *.tgz; do tar xzf "$z"; done )
В ударе:
( GLOB_IGNORE=Broad_hapmap3_r2_Affy6_cels_excluded.tgz;
for z in *.tgz; do tar xzf "$z"; done )
В любой оболочке:
for z in *.tgz; do
[ "$z" = Broad_hapmap3_r2_Affy6_cels_excluded.tgz ] || tar xzf "$z"
done
Еще один hackish путь:
mv Broad_hapmap3_r2_Affy6_cels_excluded.tgz Broad_hapmap3_r2_Affy6_cels_excluded.tgz.not
for z in *.tgz; do tar xzf "$z"; done
mv Broad_hapmap3_r2_Affy6_cels_excluded.tgz.not Broad_hapmap3_r2_Affy6_cels_excluded.tgz
Если Вы также хотите действовать на файлы в подкаталогах, находка является естественным инструментом для превращения к. Рекурсивные примеры ниже исключают названные файлы Broad_hapmap3_r2_Affy6_cels_excluded.tgz
в любом подкаталоге.
find . -name '*.tgz' -type f \
\! -name Broad_hapmap3_r2_Affy6_cels_excluded.tgz \
-exec tar xzf {} \;
Для рекурсивного обхода в zsh или ударе ≥4, можно использовать **
в шаблонах. В zsh:
setopt extended_glob
zargs -n 1 -- **/*.tgz~**/Broad_hapmap3_r2_Affy6_cels_excluded.tgz -- tar xzf
В ударе ≥4:
shopt -s globstar
( GLOB_IGNORE=Broad_hapmap3_r2_Affy6_cels_excluded.tgz;
for z in **/*.tgz; do tar xzf "$z"; done )
Можно даже использовать, находят, не хотите ли Вы рекурсивный обход, хотя это не наиболее удобный способ затем.
find *.tgz -type f \
\! -name Broad_hapmap3_r2_Affy6_cels_excluded.tgz \
-exec tar xzf {} \;
Для одноразовых вещей как это я был бы просто "в лоб" это:
for f in *.tgz; do
[[ "$f" != "Broad_hapmap3_r2_Affy6_cels_excluded.tgz" ]] && tar zxvf "$f"
done
ls
если это возможно. – Steven D 16.02.2011, 21:11ls
можно столкнуться с большим количеством проблем при обнаружении с именами файлов со специальными символами. Посмотрите следующее для лучшего объяснения: mywiki.wooledge.org/ParsingLs – Steven D 16.02.2011, 21:27find
для определенных сложных случаев и ответа glenn jackman в самых легких случаях. Я не был бы удивлен, была ли некоторая волшебная оболочка globbing колдовство, возможное с ZSH или Bash 4. – Steven D 16.02.2011, 21:41