Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Эксперт по математике/физике
4144 / 2048 / 422
Регистрация: 19.07.2009
Сообщений: 3,102
Записей в блоге: 23
1

Найти директории path/dir, рядом с которыми есть файлы path/dir.png

21.11.2018, 17:08. Просмотров 2127. Ответов 4
Метки нет (Все метки)


Добрый день.

Появилась задача следующего вида. На диске есть директории (назовём полные пути к ним path), в которых есть поддиректория path/dir и файл path/dir.png. Нужно удалить все такие файлы, попутно составив их список.
Заведомо известно, в path/dir нет других директорий с таким свойством.

Я могу написать скрипт на JS и т.п., обходящий рекурсивно директории в поисках файла, но вдруг на shell/bash есть более компактное решение.
Что скажете: есть ли однострочник для этой задачи?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2018, 17:08
Ответы с готовыми решениями:

Сокращение пути к файлу, x:\path\path\...\path
Помогите с решением такой задачи, желательно до четверга)): Строка длиной не более 1000 символов...

Проверить во всех ли директориях из PATH есть исполняемые файлы
Проверить, во всех ли директориях из PATH есть исполняемые файлы Если исполняемые файлы...

Не работают иполняемые файлы из /sbin, сама она есть в PATH
Добрый день. Перестал работать shutdown. Каталог /sbin есть в переменной PATH, права на исполнение...

The path you have specified (D:\Program Files) is invalid. The Oracle Home path may not contain spaces.
Возникла проблема с установкой Oracle9i Database 9.0.1.1.1 ОС: Windows XP Professional SP3 ...

4
Модератор
Эксперт NIX
2780 / 2030 / 678
Регистрация: 02.03.2015
Сообщений: 6,510
21.11.2018, 17:20 2
Лучший ответ Сообщение было отмечено Mysterious Light как решение

Решение

Попробуйте
Bash
1
find path -type d -exec echo rm -f {}.png +
1
Эксперт по математике/физике
4144 / 2048 / 422
Регистрация: 19.07.2009
Сообщений: 3,102
Записей в блоге: 23
21.11.2018, 23:50  [ТС] 3
Вывод не нравится:
Bash
1
rm -f . ./subdir
Если + заменить на точку с запятой, будет
Bash
1
2
rm -f ..png
rm -f ./subdir.png
Это то, что нужно.
Только обратил внимание, что если убрать echo, возникают сообщения, мол, не найден файл, который только что был удалён.
Я решил проблему, оставив echo, сохранив в переменную и запустив её:
Bash
1
2
a=$(find . -type d -exec echo rm -f {}.png \;)
$a
0
Модератор
Эксперт NIX
2780 / 2030 / 678
Регистрация: 02.03.2015
Сообщений: 6,510
22.11.2018, 11:51 4
Mysterious Light, с echo был тестовый скрипт чтобы проверить, то находит или нет.
Bash
1
find path -type d -exec rm -vf {}.png +
0
Эксперт по математике/физике
4144 / 2048 / 422
Регистрация: 19.07.2009
Сообщений: 3,102
Записей в блоге: 23
23.11.2018, 12:21  [ТС] 5
Этот код не работает. Вот мои эксперименты и результат.
Подготовка:
Bash
1
2
3
4
5
6
7
8
mkdir dir
cd dir
touch 1.png
touch 2.png
mkdir 2
mkdir 'sub dir'
touch 'sub dir.png'
cd ..
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
$ find dir -type d -exec echo rm -vf {}.png +
rm -vf dir dir/2 dir/sub dir
 
$ find dir -type d -exec rm -vf {}.png +
rm: невозможно удалить «dir»: Это каталог
rm: невозможно удалить «dir/2»: Это каталог
rm: невозможно удалить «dir/sub dir»: Это каталог
 
$ a=$(find dir -type d -exec echo rm -vf \"{}.png\" \;)
$ echo "$a"
rm -vf "dir.png"
rm -vf "dir/2.png"
rm -vf "dir/sub dir.png"
Затем можно сделать
Bash
1
2
3
4
$ echo "$a" | sed 's/$/;/' >e
$ sh -f e
удалён «dir/2.png»
удалён «dir/sub dir.png»
Но без вспомогательного файла почему-то не работает, то есть нельзя просто написать $a или $(echo "$a" | sed 's/$/;/').

Как бы то ни было, мои цели были достигнуты.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2018, 12:21

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

[WPF] "Path" является неоднозначной ссылкой между "System.Windows.Shapes.Path" и "System.IO.Path"
Здравствуйте! Делаю экспорт из программы в Excel. Код брался от WinForm, немного переписал....

DIR-300 или DIR-615 что лучше?
Заказал два маршрутизатора только забрать надо один. Какой на ваш взгляд лучше?

DIR-100+DIR-300= &%#@@#%!$ как же так?
Всем доброго времени суток. Прошу помочь мне в моей проблеме с двумя роутерами в одной сети. дело в...

D-link DIR-825 и DIR-620 как подключить?
Добрый день! Подскажите пожалуйста как подключить DIR-620D1 с прошивкой 2.5.15 как точка доступа к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.