Как удалить файл после использования Найти и GREP для поиска файла?

Проблема, из-за которой я не слышал звука, заключалась в том, что pulseaudio не работал в фоновом режиме. Причина, по которой я этого не знал, потому что pulseaudio должен был запускаться автоматически при запуске, но этого не произошло.
После того, как я запустил pulseaudo с помощью pulseaudio --start , я начал слышать звук. Теперь мне нужно добавить pulseaudio в список автозагрузки, чтобы получать звук при каждом запуске компьютера.

Также мне не удалось воспроизвести песню из учетной записи root , но из некорневой учетной записи я мог.

0
04.02.2019, 22:39
2 ответа

Вы не можете подключиться к xargsздесь и присоединиться к поиску, findможет выполнять такие команды, как grep, самостоятельно.

Первичный-execзапускает команду для файла или файлов. Это удается, и обработка операндов справа продолжается только тогда, когда сама команда завершается с успешным результатом, поэтому

find. -type f -name Client.php -exec grep -q WARNING {} \; -exec echo {} \;

будет распечатывать путь к каждому файлу с именем "Client.php", который содержит "ПРЕДУПРЕЖДЕНИЕ" внутри него. Вы можете изменить эту вторую -exec... \;на -delete, чтобы удалить ее, или изменить команду, чтобы использовать rmили mvдля работы с ними.


Точки с запятой гарантируют, что за раз проверяется только один файл, и что мы получаем это верно -при -успешном поведении:

If the primary expression is punctuated by a <semicolon>, the utility utility_name shall be invoked once for each pathname and the primary shall evaluate as true if the utility returns a zero value as exit status.

Весь -exec... \;представляет собой один фрагмент, поэтому, если вы используете -delete, вам нужно удалить точку с запятой вместе с -execи командой.


Я предлагаю сначала выполнить приведенную выше команду и убедиться, что она действительно включает только те файлы, которые вам нужны, прежде чем вы действительно удалите их. Однако полное удаление -без запроса команды -будет

find. -type f -name Client.php -exec grep -q WARNING {} \; -delete

Будьте осторожны!

4
28.01.2020, 02:23

Вы можете написать сценарий:

#!/bin/bash

FINDFILE=Client.php
if [[ $(find. -type f -name $FINDFILE | xargs grep "WARNING") ]] ; then
rm -i $FINDFILE
else
echo "File with warning not found."
fi

Поместите скрипт в папку /usr/local/bin, chmod +x /usr/local/bin/имя_сценария.
Теперь вы можете выполнить его из любого места в любое время.(Также лучше не использовать расширение.sh)

0
28.01.2020, 02:23

Теги

Похожие вопросы