Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Удалить из текущей папки подпапки с именами group2, group4, ...

Добрый день, дорогие форумчане. Поставили задачку, пытаюсь выполнить её. Буду благодарен за разъяснения.
Задача такая:
Удаление из текущей папки подпапок с именами group2, group4, ..., group10, если папка не существует выдать соответствующее сообщение
Мой ход мыслей:
1. Нам понадобится команда, которая отвечает за Удаление файлов и папок рекурсивно (включая все вложенные файлы и папки):
rm -r имя-папки

2. Так как нам нужно удалять определенные папки (а точнее, папки с диапазаном 2-10, кратные 2), то нам понадобится цикл
Bash
1
2
3
4
5
LIMIT=10
for ((a=1; a <= LIMIT ; a++))  
do
echo -n "$a "
done
Либо же
Bash
1
2
3
4
while [condition]
do
command...
done
Но, нам поставили условие, что если папки нет, то надо выдать соответствующее сообщение.
Не могу понять, как здесь можно удалять папки с разными номерами. Т.е. я, фактически, могу удалить их по одной, но опять же, должна быть команда, которая перебирает их и удаляет.
Да и даже, если я удалю их по одной, я же не получу сообщение о том, что папки не было.
P.S. Заранее спасибо
Ответ: Или так
Bash
1
rmdir group{2..10..2}
Вопрос: Почему sudo zip -o Создает архив размером в разы большим, чем вес архивируемых в текущей папке файлов и папок?

Добрый день,

Заметил такую штуку:

В текущей папке файлов и папок на 270 mb

Делаю:

sudo zip -o www_latest.zip

Создается архив размером 840 mb

Это не очень хорошо. По идее архив должен весить немного меньше. чем его содержимое или хотя бы не больше.

А если я выделяю мышкой файлы и создаю архив из контекстного меню, то создается архив размером 274 mb, что в общем не плохо, но:

1) хотелось бы производить все операции из командной строки
2) второй способ не архивирует скрытые файлы.

Как быть? Может флагов недоставил?
Ответ: симлинки?
Вопрос: Найти папки с заданным именем, удалить старые файлы и пустые папки

добрый день
помогите написать маленький скриптик
1. найти папки с именем "папка обмена" в /volume1/public
2. в найденных папках и их подпапках найти файлы старше 5 дней и удалить их
3. найти пустые подпапки в папках "папка обмена" и удалить их

спасибо
Ответ: Когда человек хоть что-то делает с ним уже можно "разговаривать на одном языке". А по поводу man — плохо искали
Bash
1
find /tmp/test/ -path '*/папка обмена/*' \( \( -type d -empty \) -o \( -type f -mtime +5 \) \) -delete
Вопрос: Удалить содержимое папки кроме одной подпапки с ее содержимым

Думаю из заголовка понятно. Есть папка data, в ней куча файлов и папок, но надо удалить все, кроме data/media
Ответ:
Сообщение от blackeangel
-f подавление запроса на подтверждение.
Не совсем так. Читайте внимательнее man по команде rm.
Сообщение от blackeangel
Вот и тут надо что то такое или нет?
Нет.
Вопрос: Вывести список подпапок с указанием количества файлов в этих папках

Здравствуйте. С Новым годом!
Хочу получить информацию по количеству подпапок и файлов во всех папках текущей директории.
Например
Есть папка Folder, в ней подпапки Folder1, Folder2, Folder3 ... FolderN.
Мне надо получить таблицу, чтобы было видно сколько есть файлов и папок в каждом Folder1...FolderN
Команда
Bash
1
$ find . -type f | wc -l
Выдает количество только в текущей папке.
Ответ: Ага, получилось, спасибо)
Вопрос: Поиск файлов с любыми Unicode символами в имени

Здравствуйте!

Мне нужно найти все файлы в имени которых в любом месте содержаться символы $'\u0001' - $'\u001F'

sudo find / -name (а что здесь писать?)

Спасибо!
Ответ: Все же стоит хоть иногда man'ы читать…
Bash
1
2
-name \*[$'\u0005'—$'\u0010'$'\u0020'—$'\u002F']\*
-name \*[$'\u0005'—$'\u0010']\* -o -name \*[$'\u0020'—$'\u002F']\*
Добавлено через 12 минут
Сообщение от cave-canem
То же работает
Coмневаюсь… Просто у Вас в текущей папке нет или 1 файл подходящий условию. Просто если не экранировать «*» — bash заменит это выражение подходящим именем файла(или несколькими если подходят несколько) из текущей папки.
Вопрос: Удалить программу Maple17 установленную через бинарник

установил пакет, теперь мне надо его удалить.
Пакет официально назывется Maple 17.

Знаю, что для корректного удаления нужно использовать команды
1) sudo apt-get remove ....
2) sudo apt-get -- purge remove ....

Проблема в том, что когда я на месте многоточий пишу Maple или maple или Maple 17, или maple17 и т.д.
пишет, что такого пакета нет..

Вопрос: как удалить? и как узнать имя пакета?
(устанавливал через терминал)
Ответ: Cra3y, ок
Спасибо вам за помощь!
Вопрос: Найти имя файла измененного позже всех

В текущем каталоге найти имя файла, который был изменен позже всех. На экран вывести дату изменения и имя файла.
Ответ:
Bash
1
stat -c '%y %n' * | sort -rh | line
При чем здесь блокнот?
Вопрос: Удалить файлы из каталога, которых нет в другом каталоге

Мне нужно удалить файлы из каталога, которых нет в другом каталоге. То есть в папке 1 есть 3 файла:"А", "Б" и "В". В папке 2 есть 5 файлов:"А", "Б", "В", "Г", "Д". Нужно из папки 2 удалить "Г" и "Д".
Делаю так:
Bash
1
2
3
4
var_1="";
var_1=$(diff $path $pathC);
cd $pathC;
rm $var_1;
И это работает. Но команда diff выводит результат в виде:
Только в /home/1/A
Только в /home/1/B
И так далее. Поэтому команда rm не только удаляет файлы но и пишет ошибки, поскольку файла "Только" и файла "в" нету.
Подскажите как исправить это?
За ранее спасибо
Ответ:
Bash
1
find $path $pathC -type f -printf "%f\n" | sort | uniq -u | while read d; do find $path $pathC -type f -name "$d" -delete; done
Добавлено через 3 часа 0 минут
Ой, я наверное не правильно задачу поняла. Написала строчку удаляющую файл с уникальным
именем в любой из двух директорий. Тогда такой вариант, замените diff на fgrep
Bash
1
var_1=$(fgrep -v -f <(ls $path) <(ls $pathC))
Вопрос: Скрипт с получением имени владельца файла

Все привет!

Есть такое задание:
Разработать скрипт, который:
• выводит имя текущего каталога
• запрашивает имя файла
если файл не существует, выводит сообщение об ошибке и снова запрашивает имя файла
• запрашивает имя пользователя
если пользователь не является владельцем файла, то выводит имя владельца файла и имя группы файла

Проблема с 3 пунктом. Нашел только вот такое: Верно, если файл с именем file существует и его владельцем является пользователь, на которого указывает эффективный идентификатор пользователя "-G file".
Как я понял, он сравнивает текущего пользователя/или пользователя, который запустил текущий процесс.
Каким образом можно сделать сравнение любого пользователя системы с владельцем файла? Прошу у Вас помощи!

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!bin/bash
echo "Текущий каталог:"
pwd
a=0
b=0
path=/home/maks/
while [ $b -lt 1 ]
do
b=$a
echo "Введите имя файла:"
read name
if [ ! -f $path/$name ]
then echo "Файл не найден.Повторить?(y/n)"
read yn
if [ $yn = y ]
then
continue
else echo "Завершение программы"
fi
fi
if [ -G $name ]
then echo ""
else echo "2:"
ls -l $name
fi
b=$(( b + 1 ))
done
Ответ: Есть задание:
Разработать скрипт, который:
- выводит имя текущего каталога
- запрашивает имя файла
- если файл не существует, выводит сообщение об ошибке и снова запрашивает имя файла
- запрашивает имя пользователя
- если пользователь не является владельцем файла, то выводит имя владельца файла и имя группы файла.
Смог сделать все до момента сравнивания имени пользователя с именем владельца файла, тут возникает проблема, как вытащить имя этого владельца из ls.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
pwd
echo "Введите имя файла:"
while true; do
read file1
echo "Поиск по имени файла $file1"
find . -name $file1
if [ -a $file1 ] ; then
echo "Файл найден"
pwd $file1
break
else
echo "Файл не найден.Повторите ввод"
fi
done
 
echo "Введите имя пользователя:"
read user
Заранее спасибо за помощь.