Прежде всего, вы должны знать, что версия, в которой вы работаете (4.2.*.*), протестирована для версии 14.04 LTS, и я бы не рекомендовал вам перейти на следующую версию.
Даже если вы хотите для обновления вы также можете получить его с терминала, выполнив следующее:
Сначала добавьте это ppa ppa:libreoffice/ppa, введя терминал:sudo add-apt-repository ppa:libreoffice/ppa
Затем введите sudo apt-get update && apt-get dist-upgrade
хорошо идти:)
Из вашего вывода видно, что вы выполнили команду
$ ls -la ./folder1/folder2/
или что-то похожее вдоль строк, и ваш вопрос попросит разобрать вывод ls. Однако вы действительно не должны разбирать ls, потому что это плохая практика по нескольким причинам. Лучшим подходом было бы следующее:
$ ls ./folder1/folder2/{"",.}test*pdf
Расширение пути будет захватывать только файлы, начинающиеся с test и заканчивающиеся на pdf, и которые могут начинаться или не начинаться с точки. Ваши файлы, которые заканчиваются на lyWfRr и GftyJL, не будут отображаться таким образом.
Однако, если вы настаиваете на разборе этого вывода, используйте $ anchor в awk для фильтрации строк, которые заканчиваются только в .pdf
$ awk '/pdf$/' input.txt
-rw-rw-r-- 1 user1 user1 10 Oct 27 10:08 ./folder1/folder2/test-file1-228783-cause1-XY-OP-0001.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:12 ./folder1/folder2/test-file2-228651-cause1-XY-OP-0001.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:08 ./folder1/folder2/test-file3-228706-cause1-XY-OP-0005.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:15 ./folder1/folder2/test-file4-228695-cause1-XY-OP-0005.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:15 ./folder1/folder2/test-file5-228675-cause1-XY-OP-0001.pdf
Для записи я не согласен с этим, рекомендую пользователям избегать ls разбора и делать что-то в Right WayTM
Хотя текущие ответы действительны, они могут быть проблематичными, если вы приступите к работе с чрезвычайно большим количеством файлов (более 30k). В этом случае я предлагаю использовать find:
find ./folder1/folder2 -maxdepth 0 -type f -name ".test-file*-*-cause1-XY-OP-*.pdf.*" -delete
EDIT: Я предполагаю, что вы хотите удалить файлы и не обновлять содержимое файла. В этом случае единственным вариантом является sed, awk или grep, поэтому вы должны избегать этого ответа.
Я предполагаю, что этот текст хранится в файле, скажем ls_l_out.txt.
Я не знаю, как вы хотите, чтобы соответствие шаблонов было выполнено, но самое простое, что я вижу, - это сопоставить Разрешения.
Итак, имея это в виду, вы можете использовать эту команду sed:
$ sed '/^-rw-------/d' ls_l_out.txt
-rw-rw-r-- 1 user1 user1 10 Oct 27 10:08 ./folder1/folder2/test-file1-228783-cause1-XY-OP-0001.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:12 ./folder1/folder2/test-file2-228651-cause1-XY-OP-0001.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:08 ./folder1/folder2/test-file3-228706-cause1-XY-OP-0005.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:15 ./folder1/folder2/test-file4-228695-cause1-XY-OP-0005.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:15 ./folder1/folder2/test-file5-228675-cause1-XY-OP-0001.pdf
Если вы запустите это, и вывод выглядит хорошо, вы можете затем отредактировать файл в -place с флагом -i в sed:
$ sed -i '/^-rw-------/d' ls_l_out.txt
Из вашего вывода видно, что вы выполнили команду
$ ls -la ./folder1/folder2/
или что-то похожее вдоль строк, и ваш вопрос попросит разобрать вывод ls. Однако вы действительно не должны разбирать ls, потому что это плохая практика по нескольким причинам. Лучшим подходом было бы следующее:
$ ls ./folder1/folder2/{"",.}test*pdf
Расширение пути будет захватывать только файлы, начинающиеся с test и заканчивающиеся на pdf, и которые могут начинаться или не начинаться с точки. Ваши файлы, которые заканчиваются на lyWfRr и GftyJL, не будут отображаться таким образом.
Однако, если вы настаиваете на разборе этого вывода, используйте $ anchor в awk для фильтрации строк, которые заканчиваются только в .pdf
$ awk '/pdf$/' input.txt
-rw-rw-r-- 1 user1 user1 10 Oct 27 10:08 ./folder1/folder2/test-file1-228783-cause1-XY-OP-0001.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:12 ./folder1/folder2/test-file2-228651-cause1-XY-OP-0001.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:08 ./folder1/folder2/test-file3-228706-cause1-XY-OP-0005.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:15 ./folder1/folder2/test-file4-228695-cause1-XY-OP-0005.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:15 ./folder1/folder2/test-file5-228675-cause1-XY-OP-0001.pdf
Для записи я не согласен с этим, рекомендую пользователям избегать ls разбора и делать что-то в Right WayTM
Хотя текущие ответы действительны, они могут быть проблематичными, если вы приступите к работе с чрезвычайно большим количеством файлов (более 30k). В этом случае я предлагаю использовать find:
find ./folder1/folder2 -maxdepth 0 -type f -name ".test-file*-*-cause1-XY-OP-*.pdf.*" -delete
EDIT: Я предполагаю, что вы хотите удалить файлы и не обновлять содержимое файла. В этом случае единственным вариантом является sed, awk или grep, поэтому вы должны избегать этого ответа.
Я предполагаю, что этот текст хранится в файле, скажем ls_l_out.txt.
Я не знаю, как вы хотите, чтобы соответствие шаблонов было выполнено, но самое простое, что я вижу, - это сопоставить Разрешения.
Итак, имея это в виду, вы можете использовать эту команду sed:
$ sed '/^-rw-------/d' ls_l_out.txt
-rw-rw-r-- 1 user1 user1 10 Oct 27 10:08 ./folder1/folder2/test-file1-228783-cause1-XY-OP-0001.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:12 ./folder1/folder2/test-file2-228651-cause1-XY-OP-0001.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:08 ./folder1/folder2/test-file3-228706-cause1-XY-OP-0005.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:15 ./folder1/folder2/test-file4-228695-cause1-XY-OP-0005.pdf
-rw-rw-r-- 1 user1 user1 20 Oct 27 10:15 ./folder1/folder2/test-file5-228675-cause1-XY-OP-0001.pdf
Если вы запустите это, и вывод выглядит хорошо, вы можете затем отредактировать файл в -place с флагом -i в sed:
$ sed -i '/^-rw-------/d' ls_l_out.txt