Как можно сократить путь к файлу при использовании wget для загрузки?

Здравствуйте! При использовании wget для загрузки списка изображений с сохранением путей возникла проблема: выдает сообщение <i>The name is too long, 245 chars total.</i> и обрезает имя файла, хотя фактическое имя картинки не длинное. <b>Как можно настроить wget так, чтобы он корректно загружал все файлы без обрезания имен?</b> <br/><br/> Например, приведенный URL: <br/> <pre><code class="html">https://g5-assets-cld-res.cloudinary.com/image/upload/q_auto,f_auto,fl_lossy/v1528088812/g5/g5-c-iqbdz1sy-pathway-senior-living-llc-client/g5-cl-57b5vqiqs-pathway-senior-living-llc-client-corporate/uploads/PATH-051Pathway_Logo_R_no_background_tjdptx.png</code></pre> <br/><br/> Здесь файл имеет имя PATH-051Pathway_Logo_R_no_background_tjdptx.png, но wget считает, что имя слишком длинное. Мне нужно сохранить только изображение PATH-051Pathway_Logo_R_no_background_tjdptx.png во всех подпапках. <br/> <pre><code>g5-assets-cld-res.cloudinary.com/image/upload/q_auto,f_auto,fl_lossy/v1528088812/g5/g5-c-iqbdz1sy-pathway-senior-living-llc-client/g5-cl-57b5vqiqs-pathway-senior-living-llc-client-corporate/uploads/PATH-051Pathway_Logo_R_no_background_t.</code></pre> <br/><br/> <pre><code class="nginx">2024-11-14 16:33:18 (102 MB/s) - ‘g5-assets-cld-res.cloudinary.com/image/upload/q_auto,f_auto,fl_lossy/g5/g5-c-iqbdz1sy-pathway-senior-living-llc-client/g5-cl-57b5vqiqs-pathway-senior-living-llc-client-corp</code></pre>
  • 14 ноября 2024 г. 18:33
Ответы на вопрос 2
Для решения проблемы с длинными именами файлов при использовании `wget`, вы можете воспользоваться следующими подходами:

1. **Использовать `--no-directories`**: Этот параметр отключает создание директорий. Вместо этого файлы будут загружены в текущую директорию, и их имена могут быть сохранены без добавления длинных путей. Однако в этом случае могут произойти конфликты имен, если в разных папках будут файлы с одинаковыми именами.

   ```bash
   wget --no-directories -r -l1 <URL>
   ```

2. **Упрощение имени файла**: Если возможно, вы можете использовать `awk` или другой инструмент для обработки текстов, чтобы изменить имена файлов после загрузки:

   ```bash
   wget -r --no-parent <URL>
   find . -name '*.png' -exec bash -c 'mv "$0" "$(basename "$0")"' {} \;
   ```

   Этот пример ищет все PNG файлы и переименовывает их, оставляя только базовые имена.

3. **Использовать `--cut-dirs`**: С помощью этой опции можно указать, сколько уровней директорий следует игнорировать:

   ```bash
   wget -r --cut-dirs=2 <URL>
   ```

   Этот параметр отбрасывает заданное количество директорий из пути, тем самым уменьшая длину имени файла.

4. **Задать собственные имена**: Если у вас есть контроль над списком файлов или их URL, вы можете использовать `-O` для задания конкретного имени файла:

   ```bash
   wget -O desired_filename.png <URL>
   ```

   В разных случаях вам может быть проще просто создать скрипт, который будет настраивать имена файлов по вашему усмотрению.

5. **Смешанные подходы**: Вы также можете комбинировать эти методы, чтобы лучше управлять именами файлов и структурой директорий.

Обратите внимание, что при использовании `wget` с большими объемами данных всегда полезно проверять конфликты имен (если используете `--no-directories`), чтобы не потерять файлы с одинаковыми именами.
Он считает не имя файла длинным, а длинное с учетом вложенных папок. 
Уберите пути к файлам длинные…
Похожие вопросы