目录作为命令行参数而不在Linux中使用完整路径名

时间:2018-07-05 18:49:58

标签: bash shell command-line

如何在不列出另一个目录的完整路径作为命令行参数的情况下从当前目录-ls另一个目录的内容?我还需要按大小对目录的内容进行排序,并且仅输出大小和名称。例如,我有以下名为script.sh的shell脚本:

#!/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 :(得分:0)

假设您要查找的目录始终是一个子目录,则以下脚本应该起作用:

#!/bin/bash
for FILE  in `find . -name "$1" `
do
    if [ -d $FILE ]
    then
        ls -lS $FILE | awk '{print $5, $9}'
    fi
done