通过传递命令行参数列出目录中的文件

时间:2013-02-05 16:03:11

标签: linux bash shell unix

我正在尝试使用命令行参数列出来自任意数量目录的文件。 我试图通过命令行传递目录路径并显示搜索目录中的文件。像这样的东西。 “目录:PATH1” 档 档 文件

“目录:PATH2” 档 文件

等。

所以我使用$ *来传递所有命令行参数,但它只显示第一个列出目录中的文件。

#!/bin/bash


cd $*
for filename in *
do
        echo "Directory: $*"
        echo $filename
done

2 个答案:

答案 0 :(得分:2)

如果您在目录名称中有空格,可能需要使用“$ @”,并且检查目录是否存在并没有坏处:

  for dir in "$@" ; do
    if [ -d "$dir" ] ; then
      echo "Directory: $dir"
      ls "$dir"  # If all you want is to show the contents, this should do
    else
      echo "Not a directory: $dir"
    fi
  done

答案 1 :(得分:0)

类似的东西应该有效:

dirs=$*
for dir in $dirs
do
  echo "Directory: $dir"
  for filename in $(ls $dir)
  do
        echo $filename
  done
done