Сортировать файлы по нескольким каталогам на основе имени файла?

Похоже, что файловая система на USB-накопителе не распознана или повреждена (неотформатирована ). Поскольку данные вам не нужны, просто -отформатируйте их и проверьте на наличие плохих блоков с помощью mkfs.vfat -c /dev/sdg. Это уничтожит все данные на вашем USB-диске . Не забудьте проверить это с помощью dmesg, вы получите то же самое [sdg]устройство, созданное после его подключения.

Это сделает его совместимым как с системами Windows, так и с Linux, так как он будет отформатирован как FAT32. Вы можете создать любую файловую систему, поддерживаемую вашим дистрибутивом, с помощьюmkfs -t...(см.man mkfs).

3
29.10.2019, 11:09
3 ответа

И ещё версия на Питоне (3):

import os

sourcepath='/path/to/source'
destination='/path/to/destination'

(_,_,fnames) = next(os.walk(sourcepath))
for f in fnames:
    subpath = '/'.join(f.split('_')[:-1])
    print("Moving {} to {}".format(os.path.join(sourcepath, f), os.path.join(destination, subpath, f)))
    os.makedirs(os.path.join(destination, subpath), exist_ok=True)
    os.rename(os.path.join(sourcepath, f), os.path.join(destination, subpath, f))
2
27.01.2020, 21:09

Это кажется самым простым и выполняет свою работу. (Я проверил ). Все, что мы делаем, это используем старый добрый sed для преобразования текущего имени, чтобы вставить «/» в нужных местах и ​​удалить что-то в нужном месте, чтобы сгенерировать имя каталога.

for i in p*
do
    d=$(echo $i | sed -e 's|_n-|/n-|' -e 's|_a-.*||')
    mkdir -p $d
    mv -i $i $d
done
1
27.01.2020, 21:09

Как насчет хорошего -вкладыша

ls | awk -F"_" '{system("mkdir -p " $1 "/" $2 "&& mv " $0 " " $1 "/" $2 "/" $0)}'

Разделите разделы имени файла на основе _создайте необходимые каталоги, а затем переместите неизмененное имя файла во вновь созданный каталог.

0
27.01.2020, 21:09

Теги

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