搜索文件并放入数组

时间:2011-07-07 14:20:45

标签: linux terminal find cat

cat `find . -name '*.css'`

这将打开任何css文件。我现在做了两件事。

1)如何在此添加* .js。所以我想查看所有css和javascript文件。

2)我想在那些(css或js文件)中查找任何css或图像文件并将它们推入数组中。所以我想找一个.png,.jpg,.gif,.tif,.css并把所有内容放在那之前,直到引号或单引号进入数组。我想要一个数组,因为这个命令将进入一个shell脚本,在我得到我需要的所有文件名后,我需要循环并稍后下载这些文件。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:2)

额外的hackery,以防有人需要它:

find ./ -name "*.css" | xargs grep -o -h -E '[A-Za-z0-9:./_-]+\.(png|jpg|gif|tif|css)'| sed -e 's/\.\./{{url here}}/g'|xargs wget

将下载每个缺失的资源

答案 1 :(得分:1)

执行命令:

find ./ -name "*.css" -or -name "*.js" > fileNames.txt

然后读取循环中的每行fileNames.txt并下载它们。

或者,如果您打算使用wget下载可以执行的图像:

find ./ -name "*.css" -or -name "*.js" | xargs grep '*.png' | xargs wget

cut之后可能需要像grep那样进行一些改进,但你明白了

答案 2 :(得分:1)

1)简单回答:您可以通过指示cat找到更多文件,将所有.js文件的名称添加到find命令中:

cat `find . -name '*.css' -or -name '*.js'`

2)grep之类的文字搜索工具可能就是你所追求的:

find . -name '*.css' -or -name '*.js' | xargs grep -o -h -E '[A-Za-z0-9:./_-]+\.(png|jpg|gif|tif|css)'

注意:我的grep模式不是通用的或完美的,但它是一个开始的例子。它匹配任何包含字母数字,冒号,点,斜线,下划线或连字符的字符串,后跟任何一个给定的扩展名。

-o选项导致grep只输出与模式匹配的.css / .js文件的部分(即只显示明显的文件名)。

如果要下载它们,可以在命令中添加| xargs wget -v,这将指示wget获取所有这些文件名。 注意 :这不适用于相对文件名;还需要一些其他魔法(即你必须根据grepped文件的位置解决它们)。也许是一些额外的hackery,例如sedawk

另外:你经常在CSS / JS中看到对TIFF的引用吗?