unix find命令在根目录下查文件夹
我想在比如:Z盘根目录下面查找文件夹名包含"1526"的文件夹。该目录下面有1000多个文件夹,由于又是映像过来的盘。每次在windows下面搜索都很慢。还有。如果在那里...
我想在比如:Z盘根目录下面查找文件夹名包含"1526"的文件夹。
该目录下面有1000多个文件夹,由于又是映像过来的盘。每次在windows下面搜索都很慢。还有。如果在那里设置只搜文件夹。又过于麻烦。
每天我都要搜10多个文件夹。再把做好的资料放到里面
我们做资料的软件是unix平台下面的。我们有一个X软件。可以将windows环境模拟成UNIX环境。那个软件支持我们自己编写的scripts。
我在编写的时候。很菜。
我用的是cat这个目录。把它放到一个变慢里面。再从中截取变量名中的第5位到第8位。再同我输入的四位编码对比。
这样下来。找到这个文件夹大概要15秒。好慢呀。
不知道怎样用find命名只要1秒就可以找出来.
我们那个盘下面的文件夹名都是这样的:
SB8E0768A0
SB6E1651A0
SB6D2003A0
SB6D1524A0
PB6D1881A0
PA4D1712A0
PA4C1559A0
我做的那个scripts每次只要输后面4码唯一的编码。前面和后面有时候会相同。
我做的那个scripts太差了。每次都要运行10多秒。垃圾。哪位大哥指点一下。
set aa = ` ls z:/ | awk95 '{ print $1 }'`
echo $aa > e:/a.txt
foreach name ($aa)
set pp = `echo $name | cut -c 5-8`
if ( $job_1 == $pp ) then
set job_1 = `echo $name | tr "[A-Z]" "[a-z]"`
set job_1 = `echo $job_1 | cut -c 1-10`
set job_1 = `echo $job_1 | tr "[:upper:]" "[:lower:]"`
goto bbb
endif
end
我用二楼的方法试下了.出错了.不知道为什么.可能你没注意到我用的是什么平台.
什么样的系统运行环境.
我在公司又自己想了下.又看了下你们的.我后来是这样搞的:
cd z:
set aa = ` ls *$job_1* -d | awk95 '{ print $1 }'`
foreach name ($aa)
set pp = `echo $name | cut -c 5-8`
if ( $job_1 == $pp ) then
set job_1 = `echo $name | tr "[:upper:]" "[:lower:]"`
set job_1 = `echo $job_1 | cut -c 1-10`
goto bbb
endif
end
$job_1 是一个变量.是前面手动输入的四位号码.
这样可以1秒内运行完
我这语法和二楼的好像是一样的. 展开
该目录下面有1000多个文件夹,由于又是映像过来的盘。每次在windows下面搜索都很慢。还有。如果在那里设置只搜文件夹。又过于麻烦。
每天我都要搜10多个文件夹。再把做好的资料放到里面
我们做资料的软件是unix平台下面的。我们有一个X软件。可以将windows环境模拟成UNIX环境。那个软件支持我们自己编写的scripts。
我在编写的时候。很菜。
我用的是cat这个目录。把它放到一个变慢里面。再从中截取变量名中的第5位到第8位。再同我输入的四位编码对比。
这样下来。找到这个文件夹大概要15秒。好慢呀。
不知道怎样用find命名只要1秒就可以找出来.
我们那个盘下面的文件夹名都是这样的:
SB8E0768A0
SB6E1651A0
SB6D2003A0
SB6D1524A0
PB6D1881A0
PA4D1712A0
PA4C1559A0
我做的那个scripts每次只要输后面4码唯一的编码。前面和后面有时候会相同。
我做的那个scripts太差了。每次都要运行10多秒。垃圾。哪位大哥指点一下。
set aa = ` ls z:/ | awk95 '{ print $1 }'`
echo $aa > e:/a.txt
foreach name ($aa)
set pp = `echo $name | cut -c 5-8`
if ( $job_1 == $pp ) then
set job_1 = `echo $name | tr "[A-Z]" "[a-z]"`
set job_1 = `echo $job_1 | cut -c 1-10`
set job_1 = `echo $job_1 | tr "[:upper:]" "[:lower:]"`
goto bbb
endif
end
我用二楼的方法试下了.出错了.不知道为什么.可能你没注意到我用的是什么平台.
什么样的系统运行环境.
我在公司又自己想了下.又看了下你们的.我后来是这样搞的:
cd z:
set aa = ` ls *$job_1* -d | awk95 '{ print $1 }'`
foreach name ($aa)
set pp = `echo $name | cut -c 5-8`
if ( $job_1 == $pp ) then
set job_1 = `echo $name | tr "[:upper:]" "[:lower:]"`
set job_1 = `echo $job_1 | cut -c 1-10`
goto bbb
endif
end
$job_1 是一个变量.是前面手动输入的四位号码.
这样可以1秒内运行完
我这语法和二楼的好像是一样的. 展开
4个回答
展开全部
find ./ | grep '关键字'
加个|通道符就可以了
==
脚本解释:用find ./ 可列出当前文件夹下所有
==
find ./
结果
./
./a
./a/b
./a/b/c
./a/b/c/SB6D2003A0
./a/b/c/PA4D1712A0
./a/b/c/PA4C1559A0
./a/b/c/SB8E0768A0
./a/b/c/PB6D1881A0
./a/b/c/SB6D1524A0
./a/b/c/SB6E1651A0
find ./|grep 1524
结果:
./a/b/c/SB6D1524A0
加个|通道符就可以了
==
脚本解释:用find ./ 可列出当前文件夹下所有
==
find ./
结果
./
./a
./a/b
./a/b/c
./a/b/c/SB6D2003A0
./a/b/c/PA4D1712A0
./a/b/c/PA4C1559A0
./a/b/c/SB8E0768A0
./a/b/c/PB6D1881A0
./a/b/c/SB6D1524A0
./a/b/c/SB6E1651A0
find ./|grep 1524
结果:
./a/b/c/SB6D1524A0
2018-10-09 · 百度知道合伙人官方认证企业
关注
展开全部
Unix 查找文件可以使用“find”命令。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
find命令用
man find 不就可以看看它的用法了,另外
加上正则表达式 应该就可以了!
========================================
你可以给出你想要实现的完整功能,比如 你要Copy的文件 名字规则?其中的文件是怎么分配到10多个目录中的?
比如:文件有 a1234.bat, b1234.bat, c1234.bat 都放到文件夹名中唯一编码是1234的文件夹中。
这样可以把脚本写的更实用,如果你只是用 find 找到一个文件夹,再去手动Copy一个个的文件,那根本不用写脚本
man find 不就可以看看它的用法了,另外
加上正则表达式 应该就可以了!
========================================
你可以给出你想要实现的完整功能,比如 你要Copy的文件 名字规则?其中的文件是怎么分配到10多个目录中的?
比如:文件有 a1234.bat, b1234.bat, c1234.bat 都放到文件夹名中唯一编码是1234的文件夹中。
这样可以把脚本写的更实用,如果你只是用 find 找到一个文件夹,再去手动Copy一个个的文件,那根本不用写脚本
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
find / -name "*1526*" -type d
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询