Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UNIX获取与模式匹配的所有目录中的文件的信息_Unix - Fatal编程技术网

UNIX获取与模式匹配的所有目录中的文件的信息

UNIX获取与模式匹配的所有目录中的文件的信息,unix,Unix,我有一堆目录,所有目录都包含一个文件/SubDir1/SubDir2/file,我希望在与特定模式匹配的目录下查看每个文件的内存。我该怎么做 到目前为止,我已经使用了ls-l | grep“模式*来获取目录列表,但我一直在做这个。通过“每个文件的内存”我想你指的是文件大小 find命令将做得更好: find . -name "pattern*" -exec du -b {} \; 这将打印树状图中名为file的每个文件的文件大小以及文件路径。通过“每个文件的内存”,我猜您指的是文件大小 fin

我有一堆目录,所有目录都包含一个文件
/SubDir1/SubDir2/file
,我希望在与特定模式匹配的目录下查看每个文件的内存。我该怎么做

到目前为止,我已经使用了ls-l | grep“模式*来获取目录列表,但我一直在做这个。

通过“每个文件的内存”我想你指的是文件大小

find
命令将做得更好:

find . -name "pattern*" -exec du -b {} \;
这将打印树状图中名为
file
的每个文件的文件大小以及文件路径。

通过“每个文件的内存”,我猜您指的是文件大小

find
命令将做得更好:

find . -name "pattern*" -exec du -b {} \;
这将打印树木中名为
file
的每个文件的文件大小以及文件路径。

Bash pittfall#1:

您可以使用
find
或shell模式:

for i in pattern*; do
    cat "$i"
done
您的一个特殊问题是获取一组匹配目录下的所有文件的列表,您可以使用更复杂的模式:

for i in pattern*/*; do
    if [ -f "$i" ]; then
         cat "$i"
    fi
 done
Bash陷阱#1:

您可以使用
find
或shell模式:

for i in pattern*; do
    cat "$i"
done
您的一个特殊问题是获取一组匹配目录下的所有文件的列表,您可以使用更复杂的模式:

for i in pattern*/*; do
    if [ -f "$i" ]; then
         cat "$i"
    fi
 done

您应该使用
find
命令:

find . -name 'pattern*' -printf '%s\t%p\n'

您应该使用
find
命令:

find . -name 'pattern*' -printf '%s\t%p\n'

除了小天狼星所说的,您还可以使用
-R
选项
ls
来获得递归列表


类似于
ls-lRh | grep“pattern”
的东西应该做你想做的事。

除了小天狼星所说的,你还可以使用
-R
选项
ls
来获得递归列表


类似于
ls-lRh | grep”模式“
应该做你想做的。

可能添加
-type f
?可能添加
-type f
?我不建议解析ls的输出。。。只是为了过滤供人食用。即使文件名中包含空格,上面这一行也可以工作,我认为这是迄今为止提出的最简单的解决方案,可以满足OP的要求。您最好使用
ls-lRh“$pattern”
,或者添加
-d
,如果这更接近您的意图。我不建议解析ls的输出。。。只是为了过滤供人食用。即使文件名中包含空格,上面这一行也可以工作,我认为这是迄今为止提出的最简单的解决方案,可以满足OP的要求。您最好使用
ls-lRh“$pattern”
,或者添加
-d
,如果这更接近您的意图。