我如何捕获从LS输出或find命令存储阵列中的所有文件名?

需要在当前目录中的一个在一个时间处理文件。 我正在寻找一种方式,采取LS的输出或查找和存储所得到的值作为数组的元素。 这种方式在需要我可以操纵数组元素。

谢谢。

--------------解决方案-------------

要回答你的问题相关,使用以下命令:

arr=( $(find /path/to/toplevel/dir -type f) )

$ find . -type f
./test1.txt
./test2.txt
./test3.txt
$ arr=( $(find . -type f) )
$ echo ${#arr[@]}
3
$ echo ${arr[@]}
./test1.txt ./test2.txt ./test3.txt
$ echo ${arr[0]}
./test1.txt

不过,如果你只是想处理文件一次,您可以用find-exec选项,如果脚本是有点简单,或者你可以做在什么发现,像这样的回报一个循环:

while IFS= read -r -d $'' file; do
# stuff with "$file" here
done < <(find /path/to/toplevel/dir -type f -print0)

你其实并不需要用ls /查找当前目录下的文件。

只需使用一个for循环:

for files in *; do
if [ -f "$files" ]; then
# do something
fi
done

如果你想得处理隐藏的文件,您可以设置相对选项:

shopt -s dotglob

这最后一条命令仅在bash的工作。

for i in `ls`; do echo $i; done;

没有比这更简单!

编辑:嗯 - 按照丹尼斯威廉姆森的评论,似乎你可以! 大声笑

根据你想做的事,你可以使用xargs的内容:

ls directory | xargs cp -v dir2

例如。 xargs的作用将在每个项目上返回。

分类:数组 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.599 (s). 10 q(s)