вот сам скрипт:
for FOLDER in $FOLDERS; do
ls -1 $FOLDER | while read FILE; do
if [ -d "$FOLDER/$FILE" ]; then
echo '$FILE (y/n)'; read -s -n1 b
if [ "$b"="y" ]; then mv "$FOLDER/$FILE" "$TRASH"; fi
fi
if [ -f "$FOLDER/$FILE" ]; then
TIME=`stat -c %X "$FOLDER/$FILE"`
if [ "$TIME" -gt "1209600" ]; then mv "$FOLDER/$FILE" "$TRASH"; fi
fi
done
done
всю голову сломал, не могу найти причину
Примечание:
вот весь скрипт. Мне нужна проверка... То есть, если $FILE - директория, то тогда скрипт должен меня спросить, че с ней делать, если $FILE - файл, то переместить не спрашивая.. Но скрипт спрашивать не собирается.. Не пойму, почему
#!/bin/bash
FOLDERS="$HOME/temp $HOME/temp/Downloads"
TRASH="$HOME/temp/TRASH"
# создаем директорию TRASH в $HOME/temp
if [ ! -d $TRASH ]; then
mkdir -p $TRASH
fi
for FOLDER in $FOLDERS; do
ls -1 $FOLDER | while read FILE; do
if [ -d "$FOLDER/$FILE" ]; then
echo 'переместить $FILE в корзину? (y/n)'; read b
if [ "$b"="y" ]; then mv "$FOLDER/$FILE" "$TRASH"; fi
fi
if [ -f "$FOLDER/$FILE" ]; then
TIME=`stat -c %X "$FOLDER/$FILE"`
if [ "$TIME" -gt "1209600" ]; then mv "$FOLDER/$FILE" "$TRASH"; fi
fi
done
done
exit 0
Примечание:
Спасибо Вам огромное! Вот, поправил:
#!/bin/bash
FOLDERS="$HOME/temp/rape_me"
mTIME=14 # время в днях
TRASH="$HOME/temp/TRASH"
if [ ! -d $TRASH ]; then
mkdir -p $TRASH
fi
((mTIME*=86400))
clear
for FOLDER in $FOLDERS; do
for FILE in $FOLDER/*; do
if [ -d "$FILE" ]; then
echo -e "mv \"$FILE\" in TRASH? (y/n) \c"
read -s -n1 OTVET
echo
if [ "$OTVET" = "y" ]; then
mv "$FILE" "$TRASH"
fi
fi
if [ -f "$FILE" ]; then
TIME=`stat -c %X "$FILE"`
if [ "$TIME" -gt "$mTIME" ]; then
mv "$FILE" "$TRASH"
fi
fi
done
done
exit 0
Хотелось бы услышать, что еще следовало бы поправить в скрипте?
Я сам не программист, но для себя писать простые программки нравится.
Родился этот скрипт после прочтения
http://habrahabr.ru/blogs/linux/135731/
Сделал по-своему, так как скрипт, описанный в статье, из папок, содержащих большое кол-во маленьких файлов (html), вытащит все и кинет в общую папку, а html файл работать перестанет... В итоге получим еще более загроможденную папку TRASH. В статье, кстати, файлы сразу удаляются.
Хочу дописать этот скрипт, чтобы про папки он не спрашивал, а находил с помощью "find -atime" в папках самый новый файл и в зависимости от него решал, перемещать всю папку или нет...
Когда допишу - выложу, сегодня уже лень.
(^_^)
Примечание:
Невнимательно man читал...
' stat -c %X ' - это не то, что было нужно...(
Примечание:
Тут уже не разберешь ниче =), но кажется наконец проблема полностью решена. Данный скрипт работает и с папками и с файлами именно так, как было мне нужно.
Спасибо за помощь!
#!/bin/bash
FOLDERS="$HOME/temp/windows_files $HOME/temp/Downloads $HOME/temp"
TRASH="$HOME/temp/TRASH"
# сколько дней не открывался файл
diff=14
# прошло в сек с 1970г.
DATE_cur=`date +%s`
# создать папку TRASH, если не существует
if [ ! -d $TRASH ]; then
mkdir -p $TRASH
fi
# перевод в секунды
((diff*=86400))
clear
for FOLDER in $FOLDERS; do
for FILE in $FOLDER/*; do
DATE_open=`stat -c %X "$FILE"`
((DATE_diff=DATE_cur-DATE_open))
if [ "$DATE_diff" -gt "$diff" ]; then
mv "$FILE" "$TRASH"
fi
done
done
exit 0
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.