Каталог в качестве аргумента командной строки без использования полного имени пути в Linux - PullRequest
0 голосов
/ 05 июля 2018

Как вы -ls содержимое другого каталога из текущего каталога, не перечисляя полный путь другого каталога в качестве аргумента командной строки? Мне также нужно отсортировать содержимое каталога по размеру и вывести только размер и имя. Например, у меня есть следующий скрипт оболочки с именем script.sh:

#!/bin/bash
ls -lS $1 | awk '{print $5, $9}'

-lS перечисляет файлы по размеру, а awk выводит только размер и имя файла в качестве вывода. $ 1 - это аргумент командной строки, но сейчас он может принимать только полный путь к каталогу, чтобы это работало. Например, у меня есть каталог, путь которого /accounts/documents/folder/directory1.

Чтобы вызвать этот скрипт, я должен набрать $ script.sh /accounts/documents/folder/directory1, чтобы это сработало. Есть ли что-то, что я могу изменить в своем скрипте, чтобы в командной строке мне нужно было только набрать $ script.sh directory1, чтобы это работало?

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 06 июля 2018

Если каталог, который вы ищете, всегда является подкаталогом, следующий скрипт должен работать:

#!/bin/bash
for FILE  in `find . -name "$1" `
do
    if [ -d $FILE ]
    then
        ls -lS $FILE | awk '{print $5, $9}'
    fi
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...