如何在某个目录中(递归)循环所有文件
我的任务是在某个目录中(递归)循环浏览所有文件。目录路径在程序的第一个参数中指定。 现在,我有以下单线:
find * -type f -exec echo "put {}" \;
,但是我不知道如何将目录路径指定为第一个参数,如果没有参数,则如何剩下 *。
如果我这样做:
$YOUR_DIR = "*";
find "$YOUR_DIR" -type f -exec echo "put {}" \;
它不起作用。
请帮我。
My task is to loop through all files (recursively) in a certain directory. The directory path is specified in the first parameter of the program.
Now I have the following one-liner:
find * -type f -exec echo "put {}" \;
, but I don't know how to specify directory path as the first parameter and how left * if there are no parameters.
If I'm doing it like:
$YOUR_DIR = "*";
find "$YOUR_DIR" -type f -exec echo "put {}" \;
it isn't working.
Please, help me.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
脚本的参数以数值标识为
$ {1}
,$ {2}
等(或$ 1
,,$ 2 < /代码>等)。您还可以使用
$ {*}
(或$*
)参考所有参数。但是您使用的是*
,而没有前面的美元符号。这具有完全不同的含义。它的意思是“当前目录中的所有条目”。您真的应该只使用一个目录,因此请检查第一个参数,并在使用它之前确保它是目录:
Parameters to a script are identified numerically as
${1}
,${2}
, etc. (or$1
,$2
, etc.). You can also refer to ALL parameters using${*}
(or$*
). But you are using*
, without the preceding dollar sign. This has a completely different meaning. It means 'all entries in the current directory'.You should really just be using one directory, so check the first parameter, and make sure it is a directory before using it: