getDate() { date '+%d%m%Y' } getDate1() { date '+%d%m%Y' --date='3 days ago' } now=$(getDate) del=$(getDate1)
yc compute disk list --folder-id "id вашей папки" | awk -F"|" '/backup/ {print $3}' | sed s/' '//g
(...)& disown
Так вот, скрипт переименовывает 30-ти минутные и перемещает их, захватывая 29-минутные, которые не обработаны.
#!/bin/bash
set -o xtrace
x="IFS";IFS=$'\n';
x="$IFS";IFS=$'\n';
пишет, что файел /boot/нужныйфайл не найден. Файл вроде называется linuz-5....
Я хочу восстановить систему до изначального состояния, не потеряв данные.
#!/bin/bash
# #папка загрузки
# Downloads=(/volume1/Media/Downloads )
# #папка фильмы
# FilmFolder=(/volume1/Media/Shared_Videos/Films )
# #папка видео файлов
# VideosFolder=(/volume1/Media/Shared_Videos )
# #файл с шаблоном замен
# Renamer=(/volume1/Media/Software/Synology/rename.txt)
# #!!! скобки используются недмного для другого, а именно для массивов - (элемент1 элемент2 элемент3)
# #!!! см. https://devhints.io/bash#arrays
# #!!! а для обьявления переменных достаточно будет:
DIR="/volume1/Media" # базовая папка
Downloads="$DIR/Downloads" # папка загрузки
VideosFolder="$DIR/Shared_Videos" # папка фильмы
FilmFolder="$DIR/Shared_Videos/Films" # папка видео файлов
Renamer="$DIR/Software/Synology/rename.txt" # файл с шаблоном замен
x="IFS";IFS=$'\n';for WhatFile in $(find $Downloads -regex '.*\.\(mkv\|m4v\|mp4\|ts\|avi\)' -and -mmin +30 | sort -r );
do
#!!! IFS как я писал выше лучше всё же использовать не внутри $(), а в цикле или за ним.
#!!! так как область видимости в $() замкнута и обратное преобразование IFS не будет глобальным.
IFS="$x"
#echo $WhatFile
#извлекаем название найденного файла
WhatFileName=$(basename "$WhatFile" )
#echo $WhatFileName
#извлекаем папку найденного файла
WhatFolder=$(dirname "$WhatFile" )
#echo $WhatFolder
#переименовываем файл
#!!! вроде как есть рекомендации использовать в условных операторах вместо одинарных [...] двойные скобки [[...]]
if [ -n "$WhatFileName" ]; then
for RenameFile in "${WhatFile[@]}"; do
WhatRenameFile=$( echo "$WhatFileName" | sed -f "$Renamer" )
if [ "$WhatFileName" != "$WhatRenameFile" ]; then
echo "переименовываем файл из $WhatFileName в $WhatRenameFile"
mv -fv "$WhatFile" "$WhatFolder"/"$WhatRenameFile"
echo "пауза 2 секунды"
sleep 2s
#else
#echo "Файл соответствует правилам "$WhatFileName""
fi
#echo $WhatRenameFile
done
fi
done
#!!! код во многом дублирует продыдущий if... что в принципе можно было бы вынести в отдельную фцнкцию
#переименовываем папку
if [ -n "$WhatFolder" ];
then
for RenameFolder in "${WhatFolder[@]}"; do
WhatRenameFolder=$( echo "$WhatFolder" | sed -f "$Renamer" )
if [ "$WhatFolder" != "$WhatRenameFolder" ];
then
echo "переименовываем папку из $WhatFolder в $WhatRenameFolder"
mv -fv "$WhatFolder" "$WhatRenameFolder"
echo "пауза 2 секунды"
sleep 2s
#else
#echo "Папка соответствует правилам "$WhatFolder""
fi
#echo $WhatRenameFolder
done
fi
#фильм или серал?
if [[ -n "$WhatFile" ]]
then
if [[ "$WhatFolder" == "$Downloads" ]]
then
echo "Обнаружен Фильм"
mv -fv "$WhatFile" "$FilmFolder"
echo "Переместили в Фильмы"
else
#проверяем в сериалах файлы
echo "ищем сериалы"
#проверяем в сериалах файлы
Serials_destination=$(find "$VideosFolder" -type f -iname "$WhatFileName" | sed -n '1p' )
if [[ -n "$Serials_destination" ]]
then
echo $Serials_destination
#извлекаем название найденного файла в сериалах
Serials_file_destination=$(basename "$Serials_destination")
echo $Serials_file_destination
#извлекаем папку найденного файла в сериалах
Serials_folder_destination=$(dirname "$Serials_destination" )
echo $Serials_folder_destination
#переименовали или нет?
if [[ "$WhatFolder" != "$WhatRenameFolder" ]]
then
mv -fv "$WhatRenameFolder"/* "$Serials_folder_destination"
echo "пауза 1 минуту"
sleep 1m
echo "удаление папки $WhatFolder"
rm -Rfv "$WhatRenameFolder"
else
mv -fv "$WhatFolder"/* "$Serials_folder_destination"
echo "пауза 1 минуту"
sleep 1m
echo "удаление папки $WhatFolder"
rm -Rfv "$WhatFolder"
fi
else
echo "В сериалах не найдено папки"
echo "перемещаем в сериалы что-то новое в "$VideosFolder/Serials/$WhatFolder""
mv -fv "$WhatFolder" "$VideosFolder/Serials/"
fi
fi
fi
$Serials_folder_destination Возвращает точку. Как убрать? Спасибо
.
./путь/к/файлу
да-да, положительно шутливая форма же работает только в одном направлении, я всегда об этом забываю.
Главное теперь не удалять неправильный ответ, иначе нещитово.
обновляйте страницу перед тем как писать ) я сразу же удалил тот пост
зачем мне удалять ваш пост вместе с моим ответом ?
xotkot, затем, что ответ неправильный. Дополнение к ответу -- да, можно так. Изначальный ответ -- нет.
ls -1 | ...
у вас бекапы в одной папке лежат без вложений ?