Мне нужно написать script, который находит все исполняемые файлы в каталоге. Поэтому я попробовал несколько способов реализовать его, и они действительно работают. Но мне интересно, есть ли более хороший способ сделать это.
Итак, это был мой первый подход:
ls -Fla | grep \*$
Это отлично работает, потому что флаг -F выполняет работу для меня и добавляет к каждому исполняемому файлу звездочку, но пусть мне не нравится знак звездочки.
Итак, это был второй подход:
ls -la | grep -E ^-.{2}x
Это тоже отлично работает, я хочу тире как первый символ, тогда меня не интересуют следующие два символа, а четвертый символ должен быть х.
Но есть немного двусмысленности в требованиях, потому что я не знаю, нужно ли мне проверять пользовательское, групповое или другое исполняемое разрешение. Таким образом, это сработает:
ls -la | grep -E ^-.{2}x\|^-.{5}x\|^-.{8}x
Итак, я тестирую четвертый, седьмой и десятый персонажи как х.
Теперь мой реальный вопрос, есть ли лучшее решение, использующее ls и grep с регулярным выражением, чтобы сказать:
Я хочу grep только те файлы, имеющие хотя бы один x из десяти первых символов строки, созданной ls -la