Shell脚本在给定文件夹时打印出文件名

时间:2017-08-16 05:47:16

标签: bash shell scripting

我正在编写一个shell脚本..给定一个文件夹作为命令行arg它将打印出其中的文件/文件夹的名称

#!/bin/sh
folder="$1"
for f in "$folder"
do
  echo "$f"
done

这只打印出给定文件夹的第一个文件/文件夹。

2 个答案:

答案 0 :(得分:4)

*之后,您需要以目录分隔符$folder分隔的shell globbing运算符/

for f in "$folder"/*
do
  echo "$f"
done

*会扩展为$folder内的所有文件。

顺便说一句,我发现你使用sh(不是bash)作为脚本解释器; sh在所有系统中都不是bash(例如在Ubuntu中),所以如果您使用bash(虽然在这种情况下没有任何区别),请明确使用bash在Shebang(例如#!/usr/bin/env bash)。

答案 1 :(得分:1)

您还可以使用find命令:

folder="$1"
find "$folder"

正如@Anubis在评论中指出的那样,find命令默认是递归的:它还将从目标文件夹开始搜索文件/文件夹到子目录中。您可以使用-mindepth-mindepth选项将结果限制在当前目录中:

find "$folder" -mindepth 1 -maxdepth 1

请注意,如果省略-mindepth 1

,也会列出目标目录