Переименование файлов путем удаления подстроки с разделителями

$ nslookup www.google.com
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   www.google.com
Address: 74.125.68.105
Name:   www.google.com
Address: 74.125.68.99
Name:   www.google.com
Address: 74.125.68.103
Name:   www.google.com
Address: 74.125.68.147
Name:   www.google.com
Address: 74.125.68.104
Name:   www.google.com
Address: 74.125.68.106
$ ping 74.125.68.105
PING 74.125.68.105 (74.125.68.105) 56(84) bytes of data.
64 bytes from 74.125.68.105: icmp_seq=1 ttl=45 time=35.7 ms
64 bytes from 74.125.68.105: icmp_seq=2 ttl=45 time=35.2 ms
64 bytes from 74.125.68.105: icmp_seq=3 ttl=45 time=35.4 ms
64 bytes from 74.125.68.105: icmp_seq=4 ttl=45 time=35.6 ms
64 bytes from 74.125.68.105: icmp_seq=5 ttl=45 time=35.9 ms
64 bytes from 74.125.68.105: icmp_seq=6 ttl=45 time=35.2 ms
64 bytes from 74.125.68.105: icmp_seq=7 ttl=45 time=36.5 ms
64 bytes from 74.125.68.105: icmp_seq=8 ttl=45 time=35.3 ms
64 bytes from 74.125.68.105: icmp_seq=9 ttl=45 time=35.4 ms
64 bytes from 74.125.68.105: icmp_seq=10 ttl=45 time=35.6 ms
^C
--- 74.125.68.105 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9013ms
rtt min/avg/max/mdev = 35.216/35.620/36.554/0.419 ms

Следующие диапазоны IP-адресов принадлежат Google:

64.233.160.0 - 64.233.191.255
66.102.0.0 - 66.102.15.255
66.249.64.0 - 66.249.95.255
72.14.192.0 - 72.14.255.255
74.125.0.0 - 74.125.255.255
209.85.128.0 - 209.85.255.255
216.239.32.0 - 216.239.63.255

Как и многие популярные веб-сайты, Google использует несколько интернет-серверов для обработки входящих запросов к своему веб-сайту. Вместо вводаhttp://www.google.com/в браузер человек может ввести http ://, а затем один из вышеуказанных адресов, например:

http://74.125.224.72/

Как узнать IP-адрес Google?

0
29.03.2020, 11:24
3 ответа

Предположим, вы хотите переименовать все файлы, в имени которых есть цифра, дважды содержащая подстроку ---, за которой следует .mp4в самом конце имени. Кроме того, если вы хотите удалить бит между двумя подстроками ---, включая сами эти подстроки:

find. -type f -name '[[:digit:]]*---*---.mp4' -exec sh -c '
    for pathname do
        mv -i "$pathname" "${pathname%---*---.mp4}.mp4"
    done' sh {} +

Это находит все обычные файлы с именами, соответствующими заданному шаблону, в текущем каталоге или ниже, а затем удаляет строку суффикса, соответствующую ---*---.mp4, и снова добавляет суффикс .mp4.

Без использованияfindbash):

shopt -s globstar nullglob dotglob

for pathname in./**/[[:digit:]]*---*---.mp4; do
    [[ ! -f $pathname ]] && continue
    mv -i "$pathname" "${pathname%---*---.mp4}.mp4"
done

Это по сути то же самое, что и команда find, но также переименовывает символические ссылки. Три параметра оболочки, которые устанавливаются в начале, включают шаблон подстановки **, используемый для рекурсивного сопоставления вниз в подкаталоги (globstar), гарантируют, что не соответствующие -шаблоны удаляются, а не остаются нераскрытыми (nullglob), и гарантируют, что что подстановочные шаблоны соответствуют скрытым именам(dotglob).

В оболочке zsh:

for pathname in./**/[[:digit:]]*---*---.mp4(.ND); do
    mv -i $pathname ${pathname%---*---.mp4}.mp4
done

Здесь точка в квалификаторе glob (.ND)заставляет предыдущий шаблон соответствовать только обычным файлам, в то время как Nи Dдействуют как включение nullglobи dotglobв bash, но только для этого конкретный узор.

1
19.03.2021, 02:31

Используя find(1)и mv(1)плюс P.E. оболочки. расширение параметра.

find. -type f -name '1*Introduction*.mp4' -exec sh -c '
  for f; do echo mv -v "$f" "${f%%-*}.mp4"
done' _ {} +

Точное совпадение будет

find. -type f -name '1. Introduction--- \[ FreeCourseWeb.com \] ---.mp4' -exec sh -c '
  for f; do echo mv -v "$f" "${f%%-*}.mp4"
done' _ {} +
  • Удалите echoЕсли вас устраивает вывод, чтобы он мог переименовывать файлы.
-1
19.03.2021, 02:31

Использование инструмента renameиз пакета util-linux(, иногда называемогоrename.ulfind:

find. -type f -name '*--- \[ FreeCourseWeb.com \] ---.mp4'\
  -exec rename -i -- '--- [ FreeCourseWeb.com ] ---' '' {} \;

Опция -iзапрашивает разрешение на перезапись существующих файлов.


Использование Perl-скрипта Ларри Уолла renameиfind:

find. -type f -name '*--- \[ FreeCourseWeb.com \] ---.mp4'\
  -exec rename 's/--- \[ FreeCourseWeb.com \] ---//' {} \;

Существующие файлы не перезаписываются по умолчанию, если не используется опция -f/ --force. Вместо этого вы увидите сообщение об ошибке ... already exists.

0
19.03.2021, 02:31

Теги

Похожие вопросы