Shell脚本,循环遍历给定目录中的文件

时间:2014-05-01 13:33:22

标签: bash

我正在尝试遍历用户指定目录中的每个文件。 这是我的代码:

clear
echo "enter the directory path: \n"
read directory
for file in $directory; do
    echo $file
done

我的输入,例如:/home/user/Downloads

输出我得到:/home/user/Downloads

如果我使用

clear
for file in *; do
    echo $file
done

它可以工作,但它只显示当前目录的竞争

3 个答案:

答案 0 :(得分:1)

如果您只想在当前目录中非递归地使用这些文件,请将您拥有的内容组合在一起:

read -p 'Enter the directory path: ' directory
for file in "$directory"/*; do
  echo "$file"
done

如果你想以递归方式循环并且你有bash 4,那就不难了:

shopt -s globstar
for file in "$directory"/**/*; do …

但是如果你只有bash 3,那么最好使用find

find "$directory"

答案 1 :(得分:0)

您可以编写此脚本

 #!/bin/bash

clear
echo "enter the directory path: \n"
read directory
for file in $directory/*; do
    echo $file
done

答案 2 :(得分:0)

尝试

dir="${GOL_HOME}/test_dir"
file="file_*.csv"
for file in `cd ${dir};ls -1 ${file}` ;do
   echo $file
done