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

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

A. FUSE (файловая система в USErspace) позволяет вам написать что-то вроде / proc без риска сбоя ядра и сделать это на любом языке / среде выполнения по вашему выбору, например Go , Node.js , Perl , PHP , Python , Ruby , Rust , и т. Д. .

Это также имеет то преимущество, что файловые системы FUSE можно монтировать без sudo , потому что они запускаются от имени пользователя, выполняющего монтирование.

Вот несколько примеров того, что люди написали с помощью FUSE:

  • mp3fs (Просмотр файлов FLAC в виде файлов MP3, которые создаются на лету, когда вы копируете / перетаскиваете их на свой MP3-плеер. )
  • PyTagsFS (Просмотр мультимедиа в дереве виртуальных папок, созданных из тегов метаданных)
  • fuse-zip (Монтирование Zip-файлов как папок)
  • FuseISO (Монтирование ISO-образов без прав root)
  • iFUSE (Монтировать iDevices)
  • FuseDAV (Монтировать общие ресурсы WebDAV)
  • fuse-exfat (Монтировать файловые системы в формате exFAT)
  • ntfs-3g ( Драйвер Linux NTFS)

B. Если вы хотите создать виртуальное устройство ввода, такое как клавиатура, мышь, джойстик и т. Д. (Например,чтобы написать драйвер пользовательского пространства для USB-устройства, с которым вы разговариваете, используя libusb ), есть uinput .

Привязки для него труднее найти, но я знаю, что они существуют для Go (только клавиатура), Python и Ruby (2) .

Примеры использования uinput в реальном мире:

  • G15Daemon (драйвер Linux для ЖК-дисплея и игровых клавиш на игровой клавиатуре Logitech G15)
  • ds4drv (драйвер для контроллеров Sony DualShock 4)
  • xboxdrv (Альтернативный драйвер контроллера XBox 360 и Linux, эквивалентный x360ce , поэтому плохо разработанные игры, такие как Runner2: Future Legend of Rhythm Alien , могут думать, что разговаривают с настоящим Контроллер XBox, когда их нет)
  • Старые драйверы Wiimote, такие как cwiid , которые требовались до того, как кто-то наконец написал драйвер Wiimote для ядра, поэтому поддержка будет доступна по умолчанию.

С. Для обычных символьных устройств существует CUSE (Символьные устройства в USErspace). Однако это гораздо менее популярно.

Единственный пользователь CUSE API, о котором я лично знаю, - это та же программа, которая побудила его создать: osspd , который реализует / dev / dsp , / dev / adsp и / dev / Mixer (API аудио OSS) в пользовательском пространстве, чтобы их можно было маршрутизировать через PulseAudio или dmix.

Единственное связывание CUSE, которое мне удалось найти, это cusepy , которое не обновлялось с 2010 года.

D. Вам может вообще не понадобиться новый специальный файл.

Например, вы можете установить прямую связь с любым USB-устройством, используя libusb (список привязок на странице), а затем общаться с другими программами через какой-либо другой механизм (сокеты TCP / UDP, чтение / запись stdin / stdout или обычных файлов на диск и т. д.).

-1
07.10.2018, 03:17
3 ответа

Вы можете сделать что-то вроде этого:

#!/bin/bash
cd folder
ls -l --time-style=long-iso | awk '{print $8 " " $6}' | while IFS= read line; do

filename=$(echo $line | awk '{print $1}')
date=$(echo $line | awk '{print $2}')

mv ${filename} ${filename}_${date}

done
1
28.01.2020, 05:07

statдоступен? Попробуйте

stat -c"mv %n %n_%y" file* | sed 's/ [^ ]* [^ ]*$//'
mv file file_2018-10-04
mv file~ file~_2018-09-30
mv file1 file1_2018-10-05
mv file1~ file1~_2018-10-04

и передать через sh, если вас устраивает результат. Или получить его с помощью «замены процесса».

1
28.01.2020, 05:07

Предполагая, что "созданный" означаетmtime1 и (ab )с использованием Perl -на основеrename:

$ rename -n 'BEGIN{use POSIX;} $_.= strftime("_%x", localtime( (stat($_))[9] ))' file?
rename(file1, file1_2018-09-23)
rename(file2, file2_2018-09-15)
rename(file3, file3_2018-10-01)
rename(file4, file4_2018-09-15)
rename(file5, file5_2018-10-06)

(-nэто сухой -режим работы -. Удалите его, если вас устраивают предложенные -имена ).


1 по причинам, обсуждаемым здесь:Как узнать дату создания файла?

2
28.01.2020, 05:07

Теги

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