перейменувати або перейти на close_write?


0

Я їхав з розуму, намагаючись зрозуміти це.

inotifywait -m -r -e close_write --format '%?' folder

Як я можу взяти конкретний файл, який запускає цю подію, і перейменувати її, а потім перемістити її або перемістити та перейменувати? Під перейменуванням я маю на увазі замінити пробіли на не алфавітно-цифрові символи, такі як підкреслення, тире і т.д. папки після обробки. Зокрема, фільми потраплять у папку з фільмами тощо.

Я працюю над усім аспектом обробки, але не володію навичками для досягнення своєї мети.

Це не повинно бути inotifywait, я відкритий для майже нічого (крім Windows), що можу досягти за допомогою деяких сценаріїв оболонок.

Чи може це зробити пошук файлу, який востаннє змінено n секунд тому? Якщо так, перевірте той самий файл після сну 30 секунд, щоб переконатися, що він не змінився, чи діяти на ньому? Мені потрібен спосіб відокремити готові файли від файлів, які не закінчували завантаження.

Буду вдячний за будь-яку допомогу.

Відповіді:


0

Ну, оскільки питання про час не було вирішальним, я налаштував все на роботу як пошук роботи з файлами, які були змінені БОЛЬШИМ на хвилину раніше mmin +1, щогодини, і коли я перевірив назад, мої файли не були переміщені, а мій термінал не мав на ньому повідомлення "немає такого файлу чи каталогу". Я думаю rename, не повторюється.

Кілька годин гуглінг переніс мене на цю сторінку: Знайдіть файл, а потім перейдіть до цього каталогу в Linux .

Зараз починаю з моєї нової папки відео

cd -- "$(find ./ -name "*S0*" -type f -printf '%h' -quit)"
find ./ -type f -mmin +1 -exec rename 's/\ /\%/g' {} \;
mv -t /home/terry/Video_Processing/staging "*%*"

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


0

Після дуже потрібної перерви я вирішив зробити ще один розмах на своєму первісному плані використання, inotifywaitщоб запустити процес перейменування / переміщення / перетворення. Було болісно очевидно, що файл повинен був бути створений БІЛЬШ за 60 секунд раніше, mminщоб спіймати файли (файли), тому спочатку тригер, а потім 61 секундовий сон перед початком перейменування.

Я використовую, iwatchяк це дозволяє рекурсивність. Поки файли названі в моді titleS0xExx.ext, з цифрами 0-9 замінюючи x, це, здається, працює добре. Ось відповідна частина єдиної частини, де необхідна рекурсія.

watch=/home/terry/New_Video/TV_Show
events=close_write,move_to
excluded=
recursive=false
autoadd=false
command=cd /home/terry/New_Video/TV_Shows
command=sleep 61
command=cd -- "$(find ./ -name "S0" -type f -printf '%h' -quit)"
command=find ./ -type f -mmin +1 -exec rename 's/\ /\%/g' {} \;
command=mv -t /home/terry/Video_Processing/staging *%*
command=find /home/terry/New_Video/TV_Shows -empty -type d -delete

Фільми та інші папки також потребують 61-секундного сну.

Затримка в часі не є проблемою в цьому випадку. Це не ідеальне рішення, але воно приблизно так само близьке, як "чорт" - це лаятися.

Чомусь він не видалив порожню папку, тому може знадобитися певна настройка.


ці команди повинні бути одним окремим рядком, гадаю, мені потрібно прочитати при цитуванні.
Террі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.