Bash 在linux中不使用完整路径名而将目录作为命令行参数
如何从当前目录中删除另一个目录的内容,而不将另一个目录的完整路径列为命令行参数?我还需要按大小对目录的内容进行排序,并且只输出大小和名称。例如,我有以下shell脚本,名为Bash 在linux中不使用完整路径名而将目录作为命令行参数,bash,shell,command-line,Bash,Shell,Command Line,如何从当前目录中删除另一个目录的内容,而不将另一个目录的完整路径列为命令行参数?我还需要按大小对目录的内容进行排序,并且只输出大小和名称。例如,我有以下shell脚本,名为script.sh: #!/bin/bash ls -lS $1 | awk '{print $5, $9}' lS按大小列出文件,awk只打印大小和文件名作为输出。$1是命令行参数,但现在,它只能接受目录的完整路径才能工作。例如,我有一个路径为/accounts/documents/folder/directory1的目录
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
即可工作
感谢您的帮助 假设您要查找的目录始终是子目录,则以下脚本应该可以工作:
#!/bin/bash
for FILE in `find . -name "$1" `
do
if [ -d $FILE ]
then
ls -lS $FILE | awk '{print $5, $9}'
fi
done
如果系统上有多个
directory1
,脚本应该怎么做?它应该使用哪一个?我想我只是假设只有一个目录1,就像我说的那样,使用完整路径是可行的,但我只是想知道是否可以只使用目录名。@kelp99script.sh directory1
如果您首先cd/accounts/documents/folder
。从当前目录接受绝对路径和相对路径是所有unix工具和系统调用的工作方式。如果您希望您的工具具有在文件系统中搜索给定名称的非标准行为,那么您必须自己编写代码(可能使用find
)在整个文件系统中搜索具有该名称的目录会很慢。