Shell获取某目录下所有文件夹的名称

Shell获取某目录下所有文件夹的名称,第1张

Shell获取某目录下所有文件夹的名称, 已知目录D:/temp,获取temp下所有文件夹的名称并输出,Shell怎么写?

方法有三,如下:

#!/bin/bash

#方法一

dir=$(ls -l D:/temp/ |awk '/^d/ {print $NF}')

for i in $dir

do

echo $i

done

#######

#方法二

for dir in $(ls D:/tmep/)

do

[ -d $dir ] && echo $dir

done

##方法三

ls -l D:/temp/ |awk '/^d/ {print $NF}'

## 其实同方法一,直接就可以显示不用for循环

php 获取目录下的所有文件夹名称

大致思路:

<?php

function traverseDir($dir){

if($dir_handle = @opendir($dir)){

while($filename = readdir($dir_handle)){

if($filename != "." &&$filename != ".."){

$subFile = $dir.DIRECTORY_SEPARATOR.$filename要将源目录及子文件相连

if(is_dir($subFile)){ 若子文件是个目录

echo $filename.'<br>'输出该目录名称

traverseDir($subFile)递归找出下级目录名称

}

}

}

closedir($dir_handle)

}

}

$dirNames = traverseDir("d:/dos")测试某目录

?>

VBS获取当前目录下所有文件夹名字

呵呵,原来是团友啊我写了一个!Set ws=WScript.CreateObject("wscript.shell")

w=ws.CurrentDirectory

Set fso=WScript.CreateObject("scripting.filesystemobject")

Set fs=fso.GetFolder(w)

Set f=fs.SubFolders

For Each uu In f

t=t &uu.Path &vbcrlf

Next

MsgBox t

使用VB获得目录下所有文件夹名称的问题

用FSO对象模型不是很好么,这种代码看的好痛苦哇!

C# 获取Ftp某个目录下的所有文件(不要文件夹)

我在之前做过一个FTP的客户端工具。

drw 文件夹

-rw 文件(有扩展名或无扩展名)

我是根据服务端返回的报文进行分析获取的列表。

给你一些代码片段:

/ <summary>

/ 获取指定目录下的文件和文件夹。

/ </summary>

/ <param name=path>要获取的目录</param>

/ <param name=WRMethods>要发送到FTP服务器的密令。</param>

/ <returns></returns>

public string[] GetFileList(string path, string WRMethods)从ftp服务器上获得文件列表

{

WebResponse response

string[] downloadFiles

int conut = 4

StringBuilder result = new StringBuilder()

Connect(path)

if (FTPVariable.IsUseProxy_ftp)

{

reqFTP.Proxy = FtpProxy.GetFtpSelectProxy(FTPVariable.FtpCommand_transferProxyName)

}

reqFTP.ReadWriteTimeout = 12000

如果不应销毁到服务器的连接,则为 true;否则为 false。默认值为 true。

reqFTP.Method = WRMethods

try

{

response = (FtpWebResponse)reqFTP.GetResponse()

goto Ftp_lbl_03

}

catch (WebException webex)

{

GetReply(webex.Message)

if (ReplyCode == 530) 未登录。

{

goto Ftp_lbl_04

}

else if (ReplyCode == 550)

{

goto Ftp_lbl_04

}

else

{

FtpManage.SetLog("获取列表超时,等候1秒后重试!")

goto Ftp_lbl_01

}

}

Ftp_lbl_01:

try

{

FtpManage.SetLog("正在连接服务器 " + FtpRemoteHost)

response = GetRequest(path, WRMethods)

}

catch (WebException)

{

FtpManage.SetLog("获取列表超时,等候1秒后重试!")

downloadFiles = null

System.Threading.Thread.Sleep(1000)

if (conut == 0)

{

goto Ftp_lbl_02

}

conut--

goto Ftp_lbl_01

}

catch (Exception ex)

{

MSG.Show(ex.Message, Global.GetRS["msgTilteError"], MessageBoxButton.OK, MsgIco.Error)

FtpManage.SetLog("命令执行失败,原因:" + ex.Message)

downloadFiles = null

return downloadFiles

}

Ftp_lbl_03:

StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default)中文文件名

string line = reader.ReadLine()

while (line != null)

{

result.Append(line)

result.Append("\n")

line = reader.ReadLine()

}

if (result.Length == 0)

{

return null

}

to remove the trailing '\n'

result.Remove(result.ToString().LastIndexOf('\n'), 1)

reader.Close()

response.Close()

FtpManage.SetLog("命令已成功执行")

return result.ToString().Split('\n')

Ftp_lbl_04:

FtpManage.SetLog(ReplyInfo)

return null

Ftp_lbl_02:

FtpManage.SetLog("550 获取列表失败,无法连接远程服务器!")

FtpManage.ftpmanage.IsRefurbish = true

return null

}

/ <summary>

/ 获取指定目录下的文件和文件夹。

/ </summary>

/ <param name=path>要获取的目录</param>

/ <returns></returns>

public string[] GetFileList(string path)从ftp服务器上获得文件列表

{

return GetFileList(FTPVariable.FtpURLhead + FtpRemoteHost + "/" + path, WebRequestMethods.Ftp.ListDirectory)

}

/ <summary>

/ 获取指定目录下的文件和文件夹。

/ </summary>

/ <returns></returns>

public string[] GetFileList()从ftp服务器上获得文件列表

{

return GetFileList(FTPVariable.FtpURLhead + FtpRemoteHost + "/", WebRequestMethods.Ftp.ListDirectory)

}

/ <summary>

/ 获取目录和文件名,返回目录表。

/ </summary>

/ <param name=path>要获取的目录</param>

/ <returns></returns>

public string[] GetCatalog_FileList(string path)

{

string[] fountainhead = GetFileList(FTPVariable.FtpURLhead + FtpRemoteHost + "/" + path, WebRequestMethods.Ftp.ListDirectoryDetails)

string[] Catalog = null

if (fountainhead == null)

{

return null

}

Catalog = new string[fountainhead.Length]

for (int i = 3i <fountainhead.Lengthi++)

{

Catalog[i - 3] += fountainhead[i].Substring(55, fountainhead[i].Length - 55) + "&"FileName

Catalog[i - 3] += fountainhead[i].Substring(30, 12) + "&"FileSize

Catalog[i - 3] += fountainhead[i].Substring(42, 13) + "&"AmendDate

Catalog[i - 3] += fountainhead[i].Substring(0, 3) + "&"

}

return Catalog

}

请问ASP中如何获取某个目录中所有文件夹的名称?

fso.GetFolder(path)

shell编程如何获取指定目录下所有文件的名称,例:目录:/root/dira/下的 001.DAT…009.DAT 9个文件名称?

你刚才不是问过了么?

vb 如何读取某目录下所有文件及子文件夹

查找某目录下所有 文件 及 子文件夹

试一试不用 FileSystemObject 对象,只用基本控件的代码。

'例子需控件:Command1,List1,List2,File1,Dir1,都采用默认属性。

'例如,查找 C:\ ,带 '** 的语可修改

Dim ctFind As Boolean

Private Sub Form_Load()

Me.Caption = "查找所有文件及文件夹"

Command1.Caption = "查找"

List2.Visible = False: File1.Visible = False: Dir1.Visible = False

Label1.Caption = "就绪"

End Sub

Private Sub Form_Unload(Cancel As Integer)

End

End Sub

Private Sub Form_Resize()

Dim W As Long

On Error Resume Next

W = 720

List1.Move 0, 0, Me.ScaleWidth - W - 120, Me.ScaleHeight - 300

Command1.Move Me.ScaleWidth - W - 60, 300, W

Label1.Move 90, Me.ScaleHeight - 255, Screen.Width, 255

End Sub

Private Sub Command1_Click()

ctFind = Not ctFind

If ctFind Then

Command1.Caption = "取消"

Call FindDirFile("C:") '**查找 C:\ 下的所有文件和目录,或 C:\Windows 等

Command1.Caption = "查找"

Else

Command1.Caption = "查找"

End If

End Sub

Private Sub FindDirFile(ByVal nPath As String)

Dim I As Long, nDir As String, Ci As Long

ctFind = True

List1.Clear: List2.Clear

If Right(nPath, 1) <>"\" Then nPath = nPath &"\"

List1.AddItem "查找 " &nPath: List2.AddItem nPath

File1.Pattern = "*"

File1.System = True: File1.Hidden = True: File1.ReadOnly = True

On Error GoTo Cuo

Dir1.Path = nPath

On Error GoTo 0

Do

If List2.ListCount = 0 Then Exit Do

nPath = List2.List(0)

List2.RemoveItem 0

Dir1.Path = nPath

For I = 0 To Dir1.ListCount - 1

GoSub ShowGe

nDir = Dir1.List(I)

If Right(nDir, 1) <>"\" Then nDir = nDir &"\"

List1.AddItem "■" &nDir

List2.AddItem nDir

Next

File1.Path = nPath

For I = 0 To File1.ListCount - 1

GoSub ShowGe

List1.AddItem " " &nPath &File1.List(I)

Next

Loop

Label1.Caption = "查找完毕,共找到 " &List1.ListCount &" 个条目"

ctFind = False

Exit Sub

Cuo:

List1.AddItem "起始目录不存在:" &nPath

ctFind = False

Exit Sub

ShowGe:

Ci = Ci + 1

If Ci <99 Then Return

Ci = 0

Label1.Caption = "已找到 " &List1.ListCount &" 个:" &nPath

DoEvents

If ctFind Then Return

End Sub

linux shell脚本怎么获取目录下所有txt文件名称

执行如下三条命令即可:

(1)、$script myresultfile

(2)、$ls -al *.txt

(3)、$exit

此时,该目录下的所有 txt 文件名称就会以长格式保存在 myresultfile 文件中了。

然后你再使用 SHELL 编程的功能把那些无用的列去掉即可。

首先是find的语法:

find [起始目录] 寻找条件 *** 作

还有种表述方式:find PATH OPTION [-exec COMMAND { } \]

因为find命令会根据我们给的option,也就是寻找条件从我们给出的目录开始对其中文件及其下子目录中的文件进行递归搜索,所以我觉的这个地方说是“起始目录”是非常好的。

该命令中的寻找条件可以是一个用逻辑运算符 not、and、or 组成的复合条件。逻辑运 算符 and、or、not 的含义为:

(1) and:逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的条 件都满足时,寻找条件才算满足。例如:

find –name ’tmp’ –xtype c -user ’inin’

% 该命令寻找三个给定条件都满足的所有文件

(2) or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足 时,寻找条件就算满足。例如:

find –name ’tmp’ –o –name ’mina*’

% 该命令查询文件名为’tmp’或是匹配’mina*’的所有文件。

(3) not:逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文件 。例如:

find ! –name ’tmp’

% 该命令查询文件名不是’tmp’的所有文件。

需要说明的是:当使用很多的逻辑选项时,可以用括号把这些选项括起来。为了避免Shell本身对括号引起误解,在话号前需要加转义字符“\”来去除括号的意义。例:

find –name′tmp′–xtypec−user′inin′

我觉的现在我应该说下出了查询条件,在find中的option的内容了:

在option中,具体有参数:

-name ’字串’ 查找文件名匹配所给字串的所有文件,字串内可用通配符 *、?、[ ]。

-lname ’字串’ 查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符 *、?、[ ]。

-gid n 查找属于ID号为 n 的用户组的所有文件。

-uid n 查找属于ID号为 n 的用户的所有文件。

-group ’字串’ 查找属于用户组名为所给字串的所有的文件。

-user ’字串’ 查找属于用户名为所给字串的所有的文件。

-empty 查找大小为 0的目录或文件。

-path ’字串’ 查找路径名匹配所给字串的所有文件,字串内可用通配符*、?、[ ]。

-perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711,644。

-size n[bckw] 查找指定文件大小的文件,n 后面的字符表示单位,缺省为 b,代表512字节的块。

-type x 查找类型为 x 的文件,x 为下列字符之一:

b 块设备文件

c 字符设备文件

d 目录文件

p 命名管道(FIFO)

f 普通文件

l 符号链接文件(symbolic links)

s socket文件

-xtype x 与 -type 基本相同,但只查找符号链接文件。

以时间为条件查找

-amin n 查找n分钟以前被访问过的所有文件。

-atime n 查找n天以前被访问过的所有文件。

-cmin n 查找n分钟以前文件状态被修改过的所有文件。

-ctime n 查找n天以前文件状态被修改过的所有文件。

-mmin n 查找n分钟以前文件内容被修改过的所有文件。

-mtime n 查找n天以前文件内容被修改过的所有文件。

-print:将搜索结果输出到标准输出。

例子:在root以及子目录查找不包括目录/root/bin的,greek用户的,文件类型为普通文件的,3天之前的名为test-find.c的文件,并将结构输出,find命令如下:

find / -name "test-find.c" -type f -mtime +3 -user greek -prune /root/bin -print

当然在这其中,-print是一个默认选项,我们不必刻意去配置它。

我们再看一下exec选项:

-exec:对搜索的结构指令指定的shell命令。注意格式要正确:"-exec 命令 {} \"

在}和\之间一定要有空格才行

{}表示命令的参数即为所找到的文件命令的末尾必须以“ \”结束。

例子:对上述例子搜索出来的文件进行删除 *** 作,命令如下:

find / -name "test-find.c" -type f -mtime +3 -user greek -prune /root/bin -exec rm {} \

find命令指令实例:

find . - name ‘main*’ - exec more {} \

% 查找当前目录中所有以main开头的文件,并显示这些文件的内容。

find . −namea.out−o−name‘∗.o′>- atime +7 - exec rm {} \

% 删除当前目录下所有一周之内没有被访问过的a .out或*.o文件。

% 命令中的“.”表示当前目录,此时 find 将从当前目录开始,逐个在其子目录中查找满足后面指定条件的文件。

% “”和“” 表示括号(),其中的 “\” 称为转义符。之所以这样写是由于对 Shell 而言,(和)另有不同的含义,而不是这里的用于组合条件的用途。

% “-name a.out” 是指要查找名为a.out的文件

% “-name ‘*.o’” 是指要查找所有名字以 .o 结尾的文件。

这两个 -name 之间的 -o 表示逻辑或(or),即查找名字为a.out或名字以 .o结尾的文件。

% find命令在当前目录及其子目录下找到这佯的文件之后,再进行判断,看其最后访问时间 是否在7天以前(条件 -atime +7),若是,则对该文件执行命令 rm(-exec rm {} \)。

其中 {} 代表当前查到的符合条件的文件名,\则是语法所要求的。

% 上述命令中第一行的最后一个 \ 是续行符。当命令太长而在一行写不下时,可输入一个 \,之后系统将显示一个 >,指示用户继续输入命令。

1.使用绝对路径执行的shell文件(如/home/xxx/binfile)

直接使用dirname $0即可

2.对于使用相对路径执行的shell文件(如 ./xxx/binfile)

pwd与dirname结合使用;pwd获得的是执行当前shell文件时,用户所在的位置;dirname可以获得相对于那个位置的偏移:

例如某shell文件所在的位置是/home/user_name/work2/SNS3_server_im/Developing/trunk/im_capp/src/notify_serv/shell文件名

1 #!/bin/sh

2 pwd

3 echo `dirname $0`

执行后输出

/home/user_name/work2/SNS3_server_im/Developing/trunk/im_capp/src

./notify_serv


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11787797.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存