【发布时间】:2018-07-05 18:49:58
【问题描述】:
如何从当前目录 -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 就可以了?
感谢任何帮助!
【问题讨论】:
-
如果系统上有多个
directory1,脚本应该做什么?应该使用哪一个? -
我想我只是假设只有一个目录1,就像我说的使用完整路径有效,但我只是想知道是否可以只使用目录名称。
-
@kelp99
script.sh directory1如果您首先使用cd /accounts/documents/folder,则可以使用。从当前目录接受绝对路径和相对路径是所有 unix 工具和系统调用的工作方式。如果您希望您的工具具有在文件系统中搜索给定名称的非标准行为,您必须自己编写代码(可能使用find) -
在整个文件系统中搜索具有该名称的目录会很慢。
标签: bash shell command-line