Предполагая, что все несортированные файлы находятся в messy_dir
, а ваши подкаталоги находятся в sorted_dir
, вы можете сделать что-то вроде этого:
(cd sorted_dir; mkdir jpg gif)
find messy_dir -type f \( -iname '*.jpg' -exec mv {} ../sorted_dir/jpg/ \; -o \
-iname '*.gif' -exec mv {} ../sorted_dir/gif/ \; \)
Это можно улучшить, но это неплохая отправная точка. .
Если вместо этого вы хотите использовать сценарий, попробуйте следующее:
#!/bin/bash
# Check assumptions
[ "$#" -eq 2 ] || exit 1
[ -d "$1" ] || exit 1
find "$1" -type f -name '*?.?*' -exec sh -c '
mkdir -p "$2/${1##*.}" && mv "$1" "$2/${1##*.}"
' find-sh {} "$2" \;
Acabo de tener el mismo problema, y resulta que mi versión de unzip
que está disponible en los repositorios de Ubuntu(UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.
)puede manejar la decodificación automática de nombres de archivo si especifica el interruptor -a
.
unzip -a stupid.zip
Я успешно выполнил команду 7z x <source.zip>
.
Версия:
p7zip Version 16.02 (locale=utf8,Utf16=on,HugeFiles=on,64 bits,[...])
Потенциально важная среда:
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
LC_CTYPE=UTF-8
Он смог распаковать все файлы с 8 -битными символами в именах файлов, причем некоторые из этих символов были пропущены, а некоторые искажены.
У меня была аналогичная проблема с декодированием zip-архива с кириллическими символами. Однострочный скрипт на Python сделал свою работу правильно:
#!/usr/bin/python
import zipfile
import sys
zipfile.ZipFile(sys.argv[1], 'r').extractall(sys.argv[2] if len(sys.argv) > 2 else '.')
Тогда просто назовите его unzip_enc
и назовите егоunzip_enc ZIP_FILE [TARGET_DIR]
Для меня ни переменные среды unzip -UU
, unzip -a
, ни LANG*
не помогли.
Мне повезло с этой комбинацией:
export LANG=es_MX
7z x file.zip
convmv -f cp437 -t utf8 -r.
добавить примечание --к convmv для фактического переименования. Позже я нашел еще лучшую версию:
LANG=es_MX.cp437 unzip -UU file.zip
convmv -f cp437 -t utf8 -r. --notest
Эта проблема с zip-файлами была исправлена в самой последней диспетчере файлов и архивов far2l . Чтобы определение устаревшей кодировки zip с помощью far2l работало правильно, языковые настройки вашей системы должны совпадать с теми, которые установлены в системе, в которой был создан архив (. Внутренний инструмент Windows для работы с папками zip использует точно такую же логику ). Также вы можете сделать
LANG=he_IL.UTF-8 far2l