繁体   English   中英

如何循环遍历某个目录中的所有文件(递归)

[英]How to loop through all files (recursively) in a certain directory

我的任务是循环遍历某个目录中的所有文件(递归)。 目录路径在程序的第一个参数中指定。 现在我有以下一行:

find * -type f -exec echo "put {}" \;

,但我不知道如何将目录路径指定为第一个参数,如果没有参数,如何离开*。

如果我这样做:

$YOUR_DIR = "*";
find "$YOUR_DIR" -type f -exec echo "put {}" \;

它不工作。

请帮我。

脚本的参数在数字上标识为${1}${2}等(或$1$2等)。 您还可以使用${*} (或$* )引用所有参数。 但是您使用的是* ,前面没有美元符号。 这具有完全不同的含义。 它的意思是“当前目录中的所有条目”。

你真的应该只使用一个目录,所以检查第一个参数,并确保它是一个目录,然后再使用它:

#!/bin/bash

if [ ! -d "${1}" ]; then
  echo "'${1}' is not a directory."
  exit 1
fi

find "${1}" -type f -exec echo "put {}" \;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM