C#文件查找(按内容、文件名称查找)

C#文件查找(按内容、文件名称查找)
C#文件查找(按内容、文件名称查找)

using System;

using System.Collections;

using System.Collections.Generic;

using https://www.360docs.net/doc/4410584693.html,ponentModel;

using System.Data;

using System.Drawing;

using System.IO;

using System.Text;

using System.Windows.Forms;

namespace Search

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

#region函数

///

///选中的文件夹

///

private DirectoryInfo _dirSelected;

///

///检索关键字

///

private string _strKeyWord;

///

///存储文件的DataTable

///

private DataTable _dtFileInfo;

///

///可查找的后缀名

///

private Hashtable _htExtension;

///

///检索方式:1 按内容检索 2按文件名称检索

///

private int _iQueryType = 1;

private bool _bFlagRunCompleted = true;

///

///是否区分大小写

///

private bool _bFlagIsUpLower = true;

private const int _GB = 1024 * 1024 * 1024;//定义GB的计算常量

private const int _MB = 1024 * 1024;//定义MB的计算常量

private const int _KB = 1024;//定义KB的计算常量

private delegate void dlgShowSearchFileName(string strMsg);

private delegate void dlglBindDataTableToDataGridView();

#endregion

#region方法

#region跨线程访问控件

///

///跨线程访问控件:显示检索文件名

///

///

private void AccessToControl_ShowSearchFileName(string strMsg)

{

if (this.InvokeRequired)

{

dlgShowSearchFileName dlgShowMsg = new

dlgShowSearchFileName(AccessToControl_ShowSearchFileName);

this.lblSearchMsg.Invoke(dlgShowMsg, new object[] { strMsg }); }

else

{

this.lblSearchMsg.Text = string.Format("正在检索 {0}", strMsg); }

}

private void AccessToControl_BindDataTableToDataGridView()

{

this.Invoke(new dlglBindDataTableToDataGridView(delegate()

{

this.dataGridView1.DataSource = null;

this.dataGridView1.DataSource = this._dtFileInfo;

}));

}

#endregion

#region搜索

///

///检索

///

private void Search()

{

ArrayList alFile = new ArrayList();

SearchFiles(this._dirSelected, ref alFile);

}

///

///遍历文件夹下的所有文件

///

///

///

private void SearchFiles(FileSystemInfo info, ref ArrayList alFileInfo) {

if (!this._bFlagRunCompleted)

{

if (!info.Exists) return;

DirectoryInfo dir = info as DirectoryInfo;

if (dir == null) return;

FileSystemInfo[] files = dir.GetFileSystemInfos();

for (int i = 0; i < files.Length; i++)

{

if (!this._bFlagRunCompleted)

{

FileInfo file = files[i] as FileInfo;

if (file != null)

{

AccessToControl_ShowSearchFileName(file.FullName);//显示检索信息

string strKeyWordTmp = this._strKeyWord;

if (this._iQueryType == 1)//按照文件内容检索

{

if (this._htExtension.ContainsValue(file.Extension))

{

try

{

StreamReader sr = new StreamReader(file.FullName);

string strContent = sr.ReadToEnd();

int iRowNumber = 0;

string strContentTmp = strContent;

if (!this._bFlagIsUpLower)

{

strContentTmp = strContent.ToUpper();

strKeyWordTmp = this._strKeyWord.ToUpper();

}

iRowNumber = GetFindTextLine(strContentTmp, strKeyWordTmp, 0);

if (iRowNumber > 0)

{

//添加到表格

AddToDataGridView(file, iRowNumber);

alFileInfo.Add(file);

}

else

{

continue;

}

}

catch

{

continue;

}

}

else

{

continue;

}

}

else

{

string strFileName = https://www.360docs.net/doc/4410584693.html,;

if (!this._bFlagIsUpLower)

{

strKeyWordTmp = this._strKeyWord.ToUpper();

strFileName = strFileName.ToUpper();

}

if (strFileName.IndexOf(strKeyWordTmp) > 0)

{

//添加到表格

AddToDataGridView(file, 0);

alFileInfo.Add(file);

}

else

{

continue;

}

}

}

else

{

SearchFiles(files[i], ref alFileInfo);

}

}

else

{

return;

}

}

}

else

{

return;

}

}

#endregion

#region其他

///

///查找字符串在原字符串中出现的行数

///

///

///

///

///

public int GetFindTextLine(string content, string findText, int startIndex) {

//标准化参数

string text1 = content.Replace("\r\n", "\r");

findText = findText.Replace("\r\n", "\r");

if (startIndex < 0)

{

startIndex = 0;

}

string[] t1 = text1.Split('\r');

int count = t1.Length;

int len = findText.Split('\r').Length;

int intStartIndex = startIndex;

StringBuilder strb = new StringBuilder();

for (int i = 0; i < count; i++)

{

int t_i = 0;

for (int j = 0; j < len; j++)

{

if (j > 0)

{

strb.Append("\r");

}

t_i = i + j;

if (t_i < count)

{

strb.Append(t1[i + j]);

}

}

//查找是否相等

intStartIndex = strb.ToString().IndexOf(findText, 0);

if (intStartIndex > -1)

{

return i + 1;

}

strb.Remove(0, strb.Length);

}

return 0;

}

private void AddToDataGridView(FileInfo fileInfo, int iRowNumber)

{

if (this._dtFileInfo == null)

{

this._dtFileInfo = new DataTable();

this._dtFileInfo.Columns.Add("文件名", typeof(string));

this._dtFileInfo.Columns.Add("路径", typeof(string));

this._dtFileInfo.Columns.Add("扩展名", typeof(string));

this._dtFileInfo.Columns.Add("行号", typeof(int));

this._dtFileInfo.Columns.Add("文件大小", typeof(string));

this._dtFileInfo.Columns.Add("创建日期", typeof(string));

this._dtFileInfo.Columns.Add("最后访问日期", typeof(string));

this._dtFileInfo.Columns.Add("最后修改日期", typeof(string));

}

string strFileName = https://www.360docs.net/doc/4410584693.html,;

string strPath = Path.GetFullPath(fileInfo.FullName);

string strExtension = fileInfo.Extension;

string strFileSize = ByteConversionGBMBKB(fileInfo.Length);

string strCreateDate = fileInfo.CreationTime.ToString("yyyy-MM-dd HH:mm:ss");

string strLastAccessDate = https://www.360docs.net/doc/4410584693.html,stAccessTime.ToString("yyyy-MM-dd HH:mm:ss");

string strLastWriteDate = https://www.360docs.net/doc/4410584693.html,stWriteTime.ToString("yyyy-MM-dd HH:mm:ss");

DataRow dr = this._dtFileInfo.NewRow();

dr[0] = strFileName;

dr[1] = strPath;

dr[2] = strExtension;

dr[3] = iRowNumber;

dr[4] = strFileSize;

dr[5] = strCreateDate;

dr[6] = strLastAccessDate;

dr[7] = strLastWriteDate;

this._dtFileInfo.Rows.Add(dr);

AccessToControl_BindDataTableToDataGridView();

}

///

///字节转换

///

///

///

public string ByteConversionGBMBKB(Int64 KSize)

{

if (KSize / _GB >= 1)//如果当前Byte的值大于等于1GB

return (Math.Round(KSize / (float)_GB, 2)).ToString() + "GB";//将其转换成GB else if (KSize / _MB >= 1)//如果当前Byte的值大于等于1MB

return (Math.Round(KSize / (float)_MB, 2)).ToString() + "MB";//将其转换成MB else if (KSize / _KB >= 1)//如果当前Byte的值大于等于1KB

return (Math.Round(KSize / (float)_KB, 2)).ToString() + "KB";//将其转换成KGB else

return KSize.ToString() + "Byte";//显示Byte值

}

private void SetControlEnable(bool bFlag)

{

this.txtKeyWord.ReadOnly = bFlag;

this.txtSearchDir.ReadOnly = bFlag;

this.btnSelectDir.Enabled = !bFlag;

this.btnSearch.Enabled = !bFlag;

this.btnStopSearch.Enabled = bFlag;

}

private void InitExtension()

{

if (this._htExtension == null)

{

this._htExtension = new Hashtable();

}

this._htExtension.Add("txt", ".txt");

this._htExtension.Add("ini", ".ini");

this._htExtension.Add("php", ".php");

this._htExtension.Add("html", ".html");

this._htExtension.Add("htm", ".htm");

this._htExtension.Add("asp", ".asp");

this._htExtension.Add("cs", ".cs");

}

#endregion

#endregion

#region事件

private void btnSelectDir_Click(object sender, EventArgs e)

{

this.folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Desktop;

this.folderBrowserDialog1.SelectedPath =

Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

if (this.folderBrowserDialog1.ShowDialog() == DialogResult.OK)

{

this._dirSelected = new DirectoryInfo(this.folderBrowserDialog1.SelectedPath);

this.txtSearchDir.Text = this._dirSelected.ToString();

}

}

private void Form1_Load(object sender, EventArgs e)

{

InitExtension();

this.cmbQueryType.Text = this.cmbQueryType.Items[0].ToString();

BeginInvoke((MethodInvoker)delegate { txtKeyWord.Focus(); });

}

private void btnSearch_Click(object sender, EventArgs e)

{

if (this.txtKeyWord.Text.Trim() == "")

{

MessageBox.Show("检索关键字不能为空!");

this.txtKeyWord.Focus();

return;

}

else

{

this._strKeyWord = this.txtKeyWord.Text.Trim();

}

if (this._dirSelected == null)

{

MessageBox.Show("检索目录未选择!");

this.btnSelectDir.Focus();

return;

}

if (this.cmbQueryType.Text.Trim() == "")

{

MessageBox.Show("检索方式未选择!");

this.cmbQueryType.Focus();

return;

}

else

{

if (this.cmbQueryType.Text.Trim() == "按文件内容检索")

{

this._iQueryType = 1;

}

else if (this.cmbQueryType.Text.Trim() == "按文件名称检索")

{

this._iQueryType = 2;

}

}

if (this.cbIsUpLow.Checked)

{

this._bFlagIsUpLower = true;

}

else

{

this._bFlagIsUpLower = false;

}

this.dataGridView1.DataSource = null;

this._dtFileInfo = null;

SetControlEnable(true);

_bFlagRunCompleted = false;

this.backgroundWorker1.RunWorkerAsync();

}

private void btnStopSearch_Click(object sender, EventArgs e)

{

this.backgroundWorker1.CancelAsync();

_bFlagRunCompleted = true;

SetControlEnable(false);

this.lblSearchMsg.Text = "";

}

private void dataGridView1_DoubleClick(object sender, EventArgs e)

{

if (this.dataGridView1.DataSource != null && this.dataGridView1.Rows.Count > 0) {

string strPath = this.dataGridView1.CurrentRow.Cells[1].Value.ToString();

string strApplicationPath = string.Format("{0}/Notepad2.exe",

Application.StartupPath);

System.Diagnostics.Process.Start(strApplicationPath, strPath);

}

}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)

{

Search();

}

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)

{

SetControlEnable(false);

this.lblSearchMsg.Text = "";

this.txtSearchDir.SelectAll();

this.txtSearchDir.Focus();

}

private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)

{

if (this.dataGridView1.DataSource != null && this.dataGridView1.Rows.Count > 0) {

for (int i = 0; i < this.dataGridView1.Rows.Count; i++)

{

this.dataGridView1.Rows[i].HeaderCell.Value = (i + 1).ToString();

}

}

}

#endregion

}

}

Linux常用命令

查询相关 find 按规则查找某个文件或文件夹,包括子目录 ?find . -name '*.sh' -- 以.sh结尾的文件 ?find . -name '*channel*' -- 包含channel字符的文件 ?find . -name 'build*' -- 以build开头的文件 ?find . -name 'abc??' -- abc后面有两个字符的文件 grep 查找内容包含指定的范本样式的文件,Global Regular Expression Print ?grep -n pattern files -- 规则-n表示显示行号 ?grep -n 'PostsActivity' AndroidManifest.xml ?grep -n '\d' AndroidManifest.xml ?grep 'aapt' build-channel.xml -- 文件中包含字符串的所有地方 ?grep -n 'aapt' build-channel.xml -- 文件中包含字符串的所有地方,并显示行号 ?ps -e | grep java -- 所有java进程 ?ps -e | grep -i qq --所有qq进程,不区分大小写 ?find . -name '*channel.xml' | xargs grep -n 'aapt' -- 在以channel.xml 结尾的文件中查找包含‘aapt’关键字的地方 ?ls | grep 'channel' -- 包含channel关键字的文件 which 在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果?which zip ?which grep 查看命令 tail tail [-f] [-c Number | -n Number | -m Number | -b Number | -k Number] [File] 从指定点开始将文件写到标准输出。使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容。 ?tail -f test.log,循环查看文件内容,Ctrl+c来终止 ?tail -n 5 test.log,显示文件最后5行内容

Shell和Linux常用命令

Shell和Linux常用命令 一、字符界面简介 1、进入字符工作方式的方法 1)、在图形环境下开启终端窗口进入字符工作方式; 2)、在系统启动后直接进入字符工作方式; 3)、使用远程登录方式(Telnet或SSH)进入字符工作方式。 2、虚拟控制台 3、关机与重启 1)、关机 #init 0 或 halt 或 shutdown –h now 2)、重启 #init 6 或 reboot 或 shutdown -r now 3)、命令init用于立即关机或重启,但是在多用户系统中,若想给用户发送警告信息以便各个用户完成自己的工作并注销登录,则必须使用shutdown命令。例如, #shutdown –h +5\ “System will be down in 5 minites,Please save your work.” 该命令警告所有用户将在5分钟后关闭系统。警告信息将显示在所有已登录的终端上。用-r参数替换-h参数用于重启。 4、Shell 1)、Shell介绍:Shell就是用户与操作系统内核之间的接口,起着协调用户与系统的一致性和在用户与系统之间进行交互的作用。Shell在Linux 系统中具有极其重要的地位。Shell最重要的功能是命令解释,从这种意义上说,Shell是一个命令解释器。Linux系统中所有可执行文件都可以

作为Shell命令来执行。Red Hat Linux默认的Shell是bash。 2)、Linux系统中可执行文件的分类 5、命令格式、通配符和文件 1)、命令格式 cmd [-option] [arguments] 2)、在Linux环境下,只要是可执行的文件并具有可执行属性它就能执行,不管其文件名后缀是什么。 3)、常用设备文件说明 4)、常用通配符 * 匹配任何字符和任何数目的字符例如,ls *.c ? 匹配任何单字符例如,ls test?.c […] 匹配任何包含在括号里的单字符例如,ls [abc]t.c 6、获取帮助 man command_name info command_name 二、文件目录操作命令 1、常用的文件目录操作命令

常用命令

文件和目录 cd /home 进入'/ home' 目录' cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 cd - 返回上次所在的目录 pwd 显示工作路径 ls 查看目录中的文件 ls -F 查看目录中的文件 ls -l 显示文件和目录的详细资料 ls -a 显示隐藏文件 ls *[0-9]* 显示包含数字的文件名和目录名 tree 显示文件和目录由根目录开始的树形结构(1) lstree 显示文件和目录由根目录开始的树形结构(2) mkdir dir1 创建一个叫做'dir1' 的目录' mkdir dir1 dir2 同时创建两个目录 mkdir -p /tmp/dir1/dir2 创建一个目录树 rm -f file1 删除一个叫做'file1' 的文件' rmdir dir1 删除一个叫做'dir1' 的目录' rm -rf dir1 删除一个叫做'dir1' 的目录并同时删除其内容rm -rf dir1 dir2 同时删除两个目录及它们的内容

mv dir1 new_dir 重命名/移动一个目录 cp file1 file2 复制一个文件 cp dir/* . 复制一个目录下的所有文件到当前工作目录 cp -a /tmp/dir1 . 复制一个目录到当前工作目录 cp -a dir1 dir2 复制一个目录 ln -s file1 lnk1 创建一个指向文件或目录的软链接 ln file1 lnk1 创建一个指向文件或目录的物理链接 touch -t 0712250000 file1 修改一个文件或目录的时间戳- (YYMMDDhhmm) file file1 outputs the mime type of the file as text iconv -l 列出已知的编码 iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding. find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" \; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick) 文件搜索

linux命令详解:pgrep命令

linux命令详解:pgrep 前言 经常要查看进程的信息,包括进程的是否已经消亡,通过pgrep来获得正在被调度的进程的相关信息。pgrep通过匹配其程序名,找到匹配的进程 重要选项 -l 同时显示进程名和PID -o 当匹配多个进程时,显示进程号最小的那个 -n 当匹配多个进程时,显示进程号最大的那个 注:进程号越大,并不一定意味着进程的启动时间越晚 使用说明 查看指定名称的进程信息 默认只显示PID 1: [root@master ~]# pgrep ssh 2: 3686 3: 7907 4: 8815 5: 12874 同时显示PID和ProcessName : –l 1: [root@master ~]# pgrep -l sshd 2: 3686 sshd 3: 7907 sshd 4: 8815 sshd 5: 12874 sshd -o 当匹配多个进程时,显示进程号最小的那个 1: [root@master ~]# pgrep -l sshd 2: 3686 sshd 3: 7907 sshd 4: 8815 sshd 5: 12874 sshd 6: [root@master ~]# pgrep -l -o sshd 7: 3686 sshd -n 当匹配多个进程时,显示进程号最大的那个 1: [root@master ~]# pgrep -l -n sshd 2: 12874 sshd 特别说明 1)pgrep相当于ps –eo pid,cmd | awk ‘{print $1,$2}’ | grep KeyWord 1: [root@master ~]# ps -eo pid,cmd | awk '{print $1,$2}' | grep init 2: 1 init 3: [root@master ~]# pgrep init 4: 1

grep命令详解

grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同! 正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串。vim、grep、awk 、sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大;在以前上班的公司里,由于公司是基于web的服务型网站(nginx),对正则的需求比较大,所以也花了点时间研究正则,特与大家分享下: 1基础正则表达式 grep 工具,以前介绍过。 grep -[acinv] '搜索内容串' filename -a 以文本文件方式搜索 -c 计算找到的符合行的次数 -i 忽略大小写 -n 顺便输出行号 -v 反向选择,即找没有搜索字符串的行 其中搜索串可以是正则表达式! 1 搜索有the的行,并输出行号 $grep -n 'the' regular_express.txt 搜索没有the的行,并输出行号 $grep -nv 'the' regular_express.txt 2 利用[]搜索集合字符

[] 表示其中的某一个字符,例如[ade] 表示a或d或e woody@xiaoc:~/tmp$ grep -n 't[ae]st' regular_express.txt 8:I can't finish the test. 9:Oh! the soup tast e good! 可以用^符号做[]内的前缀,表示除[]内的字符之外的字符。 比如搜索oo前没有g的字符串所在的行. 使用'[^g]oo' 作搜索字符串woody@xiaoc:~/tmp$ grep -n '[^g]oo' regular_express.txt 2:apple is my favorite foo d. 3:Foo tball game is not use feet only. 18:google is the best too ls for search keyword. 19:go ooo oogle yes! [] 内可以用范围表示,比如[a-z] 表示小写字母,[0-9] 表示0~9的数字, [A-Z] 则是大写字母们。[a-zA-Z0-9]表示所有数字与英文字符。当然也可以配合^来排除字符。 搜索包含数字的行 woody@xiaoc:~/tmp$ grep -n '[0-9]' regular_express.txt 5:However ,this dress is about $ 3183 dollars. 15:You are the best is menu you are the no.1. 行首与行尾字符^ $. ^ 表示行的开头,$表示行的结尾( 不是字符,是位置)那么‘^$’ 就表示空行,因为只有 行首和行尾。 这里^与[]里面使用的^意义不同。它表示^后面的串是在行的开头。 比如搜索the在开头的行 woody@xiaoc:~/tmp$ grep -n '^the' regular_express.txt 12:the symbol '*' is represented as star. 搜索以小写字母开头的行 woody@xiaoc:~/tmp$ grep -n '^[a-z]' regular_express.txt

Shell命令

Shell Shell 就是用户与操作系统内核之间的接口,起着协调用户与系统的一致性和在用户与系统之间进行交互的作用。 4.1.1 Shell 的基本概念 1. 什么是S hell Shell 就是用户与操作系统内核之间的接口,起着协调用户与系统的一致性和在用户与系统之间进行交互的作用。Shell 在L inux 系统中具有极其重要的地位,如图4-1 所示

第 4 章 Shell 与 V i 编辑器 - 71 - diff grep vi multitasking sh gcc device hardware interface kernn e l TCP/IP stack bash utilii t es 图 4-1 Linux 系统结构组成 2. Shell 的功能 Shell 最重要的功能是命令解释,从这种意义上来说,Shell 是一个命令解释器。Linux 系统中的所有可执行文件都可以作为 Shell 命令来执行。将可执行文件作一个分类,如表 4-1 所示。 表 4-1 可执行文件的分类 部的解释器将其解释为系统功能调用并转交给内核执行;若是外部命令或实用程序就试图 在硬盘中查找该命令并将其调入内存,再将其解释为系统功能调用并转交给内核执行。在 查找该命令时分为两种情况: 用户给出了命令路径,Shell 就沿着用户给出的路径查找,若找到则调入内存,若没有 则输出提示信息; 用户没有给出命令的路径,Shell 就在环境变量 PATH 所制定的路径中依次进行查找, 若找到则调入内存,若没找到则输出提示信息。 图 4-2 描述了 S hell 是如何完成命令解释的。

cat和grep指令

cat命令 功能1: 在标准输出上显示文件。 语法:cat [选项] 文件 说明:该命令功能之一是用来显示文件。它依次读取其后所指文件的内容并将其输出到标准输出。 该命令的各选项含义如下: -v 用一种特殊形式显示控制字符,LFD与TAB除外。 加了-v 选项后,-T 和-E 选项将起作用。其中: -T 将TAB显示为“ùI”。该选项需要与-v 选项一起使用。即如果没有使用-v 选项,则这个选项将被忽略。 -E 在每行的末尾显示一个$符。该选项需要与-v 选项一起使用。 -u 输出不经过缓冲区。 -A 等于-vET。 -t 等于-vT。 -e 等于-vE。 -n 在文件的每行前面显示行号。 指令实例: cat example.txt // 则在屏幕上显示出example.txt 文件的内容 cat -A exam2.txt // 在屏幕上显示出exam2.txt 文件的内容,而且如果文件中含有特殊字符的话,一并显示 功能2:连接两个或多个文件 说明:该命令功能之二是用来将两个或多个文件连接起来。 cat file1 file2 > file3 // 这样就把文件filel和文件file2的内容合并起来,放入文件file3中。 (此时在屏幕上并不能直接看到该命令执行后的结果。若想看到连接后的文件内容, 可以再使用“cat file3”。) 需要说明的是,当文件内容过多时,就带来一个问题,因为文本在屏幕上迅速地闪过,用户来不及看清其内容。因此,当文件内容较大时,一般可用more等命令分屏显示,以免因屏幕滚动太快而无法看清。 linux grep命令

1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 2.格式 grep [options] 3.主要参数 [options]主要参数: -c:只输出匹配行的计数。 -I:不区分大小写(只适用于单字符)。 -h:查询多文件时不显示文件名。 -l:查询多文件时只输出包含匹配字符的文件名。 -n:显示匹配行及行号。 -s:不显示不存在或无匹配文本的错误信息。 -v:显示不包含匹配文本的所有行。 pattern正则表达式主要参数: \:忽略正则表达式中特殊字符的原有含义。 ^:匹配正则表达式的开始行。 $: 匹配正则表达式的结束行。 \<:从匹配正则表达式的行开始。 \>:到匹配正则表达式的行结束。 [ ]:单个字符,如[A]即A符合要求。 [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求。 。:所有的单个字符。 * :有字符,长度可以为0。 4.grep命令使用简单实例 $ grep ‘test’ d* 显示所有以d开头的文件中包含test的行。 $ grep ‘test’ aa bb cc 显示在aa,bb,cc文件中匹配test的行。 $ grep ‘[a-z]\{5\}’ aa 显示所有包含每个字符串至少有5个连续小写字符的字符串的行。 $ grep ‘w\(es\)t.*\1′aa 如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用”\”号进行转义,直接写成’w(es)t.*\1′就可以了。 5.grep命令使用复杂实例 假设您正在’/usr/src/Linux/Doc’目录下搜索带字符串’magic’的文件: $ grep magic /usr/src/Linux/Doc/* sysrq.txt:* How do I enable the magic SysRQ key? sysrq.txt:* How do I use the magic SysRQ key? 其中文件’sysrp.txt’包含该字符串,讨论的是SysRQ 的功能。 默认情况下,’grep’只搜索当前目录。如果此目录下有许多子目录,’grep’会以如下形式列出:

java获取文件夹下所有文件的名称

import java.io.File; import java.util.ArrayList; import java.util.HashMap; publicclass Demo { static ArrayList name=new ArrayList(); /** * @param args */ publicstaticvoid main(String[] args) { // TODO Auto-generated method stub File path =new File("D:\\JAVA视频");// 文件路径final File[] files = path.listFiles();// 读取getFileName(files); for(int i=0;i

Linux进程管理命令详解16页word文档

Linux进程管理命令详解 Linux进程管理命令详解2010-10-08 14:124.3 Linux进程管理命令详解(1) Linux管理进程的最好方法就是使用命令行下的系统命令。Linux 下面的进程涉及的命令有 at,bg,fg,kill,crontab,jobs,ps,pstree,top,nice,renice,sleep,nohu p。 1.at命令:定时运行命令 作用:at命令在指定时刻执行指定的命令序列。 格式: at[-V][-q x][-f file][-m]time atq[-V][-q x] atrm[-V][-q x]job… batch[-V][-f file][-m] 主要选项如下。 -V:显示作业将被执行的时间。 -q:选用q参数则可选队列名称,队列名称可以是a~z和A~Z之间的任意字母。队列字母顺序越高则队列优先级别越低。 -f:从文件中读取命令或shell脚本,而非在提示后指定它们。 -m:执行完作业后发送电子邮件到用户。 time:设定作业执行的时间。time参数可以是下面格式中的任何一种。 HH:MM格式--如04:00,代表4:00AM。如果时间已过,就会在第二天的这一时间执行。 midnight代表12:00AM。noon代表12:00PM。teatime代表4:00PM。 英文月名日期年份格式--如January 15 2005,代表2005年1月15日。年份可无。 MMDDYY、MM/DD/YY或MM.DD.YY格式--如011505,代表2005年1月15日。

now+时间格式--时间以minutes、hours、days或weeks为单位。如now+5 days,代表命令应该在5天之后的此时此刻执行。偏移量的格式为时间+偏移量,单位是minutes、hours和days。 说明:at命令实际上是一组命令集合。at命令在指定时刻执行指定的命令序列。atq查询已经设定的命令序列。atrm删除已经设定的命令序列。batch当系统负载低于一个设定值(0.8),执行设定的命令序列。 应用实例如下。 (1)让系统在两天后的17:30执行文件data中指定的作业,使用命令: #at-f data 15:30+2 days (2)配置batch作业 要在系统平均载量降到0.8以下时执行某项一次性的任务,使用batch命令。键入batch命令后,"at"提示就会出现。键入要执行的命令,按"Enter"键,然后键入"Ctrl-D"。你可以指定多条命令,方法是键入每一条命令后按"Enter"键。键入所有命令后,按"Enter"键转入一个空行,然后再键入"Ctrl-D"。或者你也可以在提示后输入shell脚本,在脚本的每一行后按"Enter"键,然后在空行处键入"Ctrl-D"来退出。系统平均载量一降到0.8以下,这组命令或脚本就会被执行。如果这组命令或脚本试图在标准输出中显示信息,该输出会用电子邮件方式被邮寄给用户。 (3)进阶应用:控制对at和batch的使用 通过/etc/at.allow和/etc/at.deny文件可以用来限制对at和batch命令的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许使用空白字符。如果控制文件被修改了,at守护进程不必被重启。每次用户试图执行at或batch命令时,使用控制文件都会被读取。不论控制文件如何规定,超级权限用户总是可以执行at和batch 命令。如果at.allow文件存在,只有其中列出的用户才能使用at或batch命令,at.deny文件会被忽略。如果at.allow文件不存在,所有在at.deny文件中列出的用户都被禁止使用at和batch命令。 2.bg命令后台运行命令

Excel提取文件夹中的所有文件名称

Excel提取文件夹中的所有文件名称 1.E xcel提取文件夹中的所有文件名称 1、在那个文件夹内新建一个.TXT文件(如wenjian.txt),用记事本单开输入dir> 1.txt 保存退出 将刚才的.TXT(wenjian.txt)更名为.bat文件(wenjian.bat) 双击wenjian.bat文件运行一次,在文件夹内多出一个1.txt文件 打开1.txt文件,将其中的内容粘贴到Excel中,数据——分列处理就可以得到你要的文件名列表了! 2、VBA(2003版) 在那个文件夹下新建Excel文件,打开新建的Excel文件,右击工作表标签(如Sheet1),查看代码——在代码编辑器中输入以下代码 Sub Test() Dim i As Integer Dim strPath As String strPath = ThisWorkbook.Path With Application.FileSearch .LookIn = strPath .SearchSubFolders = True .Filename = "*.*" If .Execute > 0 Then For i = 1 To .FoundFiles.Count Range("A" & i) = .FoundFiles(i) Next i End If End With End Sub 回到Excel表格中,工具——宏——宏——选择Sheet1.Test——执行 看看效果吧! 2.E xcel单元格中显示该文件夹内的文件数量或名称 假设这个文件夹是 D:\fda 1、插入]-[名称]-[定义],或按CTRL+F3,打开excel→名称管理器→定义一个名称→比如:aaa 引用位置输入:=FILES("d:\fda\*.*") &T(NOW())

linux中目录.文件命令详解

linux中ls命令详解 linux中ls命令详解 ls 命令可以说是linux下最常用的命令之一。 -a 列出目录下的所有文件,包括以 . 开头的隐含文件。 -b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。-c 输出文件的 i 节点的修改时间,并以此排序。 -d 将目录象文件一样显示,而不是显示其下的文件。 -e 输出时间的全部信息,而不是输出简略信息。 -f -U 对输出的文件不排序。 -g 无用。 -i 输出文件的 i 节点的索引信息。 -k 以 k 字节的形式表示文件的大小。 -l 列出文件的详细信息。 -m 横向输出文件名,并以“,”作分格符。 -n 用数字的 UID,GID 代替名称。 -o 显示文件的除组信息外的详细信息。 -p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通 文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套 接字(sockets)。 -q 用?代替不可输出的字符。 -r 对目录反向排序。 -s 在每个文件名后输出该文件的大小。 -t 以时间排序。 -u 以文件上次被访问的时间排序。 -x 按列输出,横向排序。 -A 显示除“.”和“..”外的所有文件。 -B 不输出以“~”结尾的备份文件。

-C 按列输出,纵向排序。 -G 输出文件的组的信息。 -L 列出链接文件名而不是链接到的文件。 -N 不限制文件长度。 -Q 把输出的文件名用双引号括起来。 -R 列出所有子目录下的文件。 -S 以文件大小排序。 -X 以文件的扩展名(最后一个 . 后的字符)排序。 -1 一行只输出一个文件。 --color=no 不显示彩色文件名 --help 在标准输出上显示帮助信息。 --version 在标准输出上输出版本信息并退出。 只列出子目录 1. ls -F | grep /$ 或者 alias sub = "ls -F | grep /$"(linux) 2. ls -l | grep "^d" 或者 ls -lL | grep "^d" (Solaris) 计算当前目录下的文件数和目录数 下面命令可以分别计算当前目录下的文件和目录个数: # ls -l * |grep "^-"|wc -l ---- to count files # ls -l * |grep "^d"|wc -l ----- to count dir 显示彩色目录列表 打开/etc/bashrc, 加入如下一行: alias ls="ls --color" 下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的含义如下: 1. 蓝色-->目录 2. 绿色-->可执行文件 3. 红色-->压缩文件

Linux grep命令的使用用法

Linux Grep用法 QUOTE: 原帖由"网中人" 发表: 比方以grep 来说, 在Linux 上你可找到grep, egrep, fgrep 这几个程序, 其差异大致如下: * grep: 传统的grep 程序, 在没有参数的情况下, 只输出符合RE 字符串之句子. 常见参数如下: -v: 逆反模示, 只输出"不含" RE 字符串之句子. -r: 递归模式, 可同时处理所有层级子目录里的文件. -q: 静默模式, 不输出任何结果(stderr 除外. 常用以获取return value, 符合为true, 否则为false .) -i: 忽略大小写. -w: 整词比对, 类似\ . -n: 同时输出行号. -c: 只输出符合比对的行数. -l: 只输出符合比对的文件名称. -o: 只输出符合RE 的字符串. (gnu 新版独有, 不见得所有版本都支持.) -E: 切换为egrep . * egrep: 为grep 的扩充版本, 改良了许多传统grep 不能或不便的操作. 比方说: - grep 之下不支持? 与+ 这两种modifier, 但egrep 则可. - grep 不支持a|b 或(abc|xyz) 这类"或一"比对, 但egrep 则可. - grep 在处理{n,m} 时, 需用\{ 与\} 处理, 但egrep 则不需. 诸如此类的... 我个人会建议能用egrep 就不用grep 啦... ^_^ * fgrep: 不作RE 处理, 表达式仅作一般字符串处理, 所有meta 均失去功能. g r e p一般格式为: ][ - ] CODE: grep [选项]基本正则表达式[文件] 这里基本正则表达式可为字符串。 单引号双引号 在g r e p命令中输入字符串参数时,最好将其用双引号括起来。 在调用模式匹配时,应使用单引号。 例如:“m y s t r i n g”。这样做有两个原因,一是以防被误解为s h e l l命令,二是可以用来查找多个单词组成的字符串。在调用变量时,也应该使用双引号,诸如:g r e p“$ M Y VA R”文件名,如果不这样,将没有返回结果。 常用的g r e p选项有: QUOTE: -c 只输出匹配行的计数。 -i 不区分大小写(只适用于单字符)。 -h 查询多文件时不显示文件名。

提取文件夹中全部文件的文件名的方法

提取文件夹中全部文件的文件名的方法 2014年1月11日星期六 方法一: 1、打开一个记事本文档,然后复制下列内容到文档中。 @echo off dir /s/b *.* > 文件名.txt exit 以上内容必须是Office Calibri (西文正文)字体即可生效。 2、将上述内容复制到要提取文件名的文件夹,然后将该文件改名为X.bat(X可为任意名称),然后双击运行,就能完成你的要求了。 方法二: 有时我们想要把一个文件夹中的所有文件名整理到一个文件中,便于管理和查询以及打印,多数是使用“复制”、“粘贴”方法(将文件夹中的文件重命名,在可编辑状态下进行复制,而后在其他文档中粘贴)。这种办法可行,但对于文件夹中有大量的文件的情况,则工作效率低,而且做完后必须核对。 利用DOS的重定向命令“〉”加Excel的引用外部数据功能可方便快捷的实现。 假设我们要提取C盘下的Windows目录下的所有文件及文件夹名。 第1步:在DOS或Windows98的MS-DOS方式下,输入如下命令:C:\windows\dir〉d:\1.txt(回车) 第2步:打开一个新的ExcelXP电子表格,单击工具栏中的“数据”下拉菜单,选择“导入外部数据→导入数据”命令,打开“导入数据”对话框,在“查找范围”中找到D盘下的1.txt文档,单击“打开”,进入“文本导入向导-3步骤之1”(如图1)。 第3步:在“原始数据类型”单选框中选“分隔符号”后按“下一步”,进入“文本导入向导-3步骤之2”(如图2)。

第4步:在“分隔符号”复选框中选“分号、逗号、空格、其他”,并在“其他”后的空格中填“.”,按“下一步”,进入“文本导入向导-3步骤之3”(如图3)。 第5步:单击“完成”,出现“导入数据”对话框,选择“现有工作表”单选框后按“确定”。 到了这里,你应可以看到8列数据,第一列便是所要的“文件名”。但是,DIR命令的显示的中文文件名只显示3~4个汉字,别急,看看第7列(G列),所有的完整的文件名都在这里(如图4)!第8列是文件名的后缀,方便于筛选(对于Excel2000,所不同的是在工具栏中的“数据”下拉菜单下,选择的是“获取外部数据/导入文本文件”命令)。 至此,你就可以用Excel来编辑这些文件名了。 方法三: dir命令 例如:将C盘根目录里的文件夹名和文件名都保存在D盘目录下的aa.txt里,输入命令:“dir c:\>d:\aa.txt”(注意:dir后面有1个空格,即dir[空格][文件目录]>[保存文件名目录]\[文件名].txt) 这样所有文件夹及文件名就保存到了aa.txt里面了; 此文件可导入excel作进一步处理。dir可加参数/w 等。 例如:命令提示符格式:“dir d:\电脑软件>e:\文件名.txt”。

Grep命令详解

Grep命令详解 grep [ -E | -F ] [ -i ] [ -h ] [ -s ] [ -v ] [ -w ] [ -x ] [ -y ] [ [ [ -b ] [ -n ] ] | [ -c | -l | -q ] ] [ -p [ Separator ] ] { [ -e PatternList ... ] [ -f PatternFile ... ] | PatternList ... } [ 文件... ] 描述 grep 命令用于搜索由Pattern参数指定的模式,并将每个匹配的行写入标准输出中。这些模式是具有限定的正则表达式,它们使用ed或egrep命令样式。grep命令使用压缩的不确定算法。 如果在File参数中指定了多个名称,grep命令将显示包含匹配行的文件的名称。对shell 有特殊含义的字符($, *, [, |, ^, (, ), \ ) 出现在Pattern 参数中时必须带双引号。如果Pattern参数不是简单字符串,通常必须用单引号将整个模式括起来。在诸如[a-z], 之类的表达式中,-(减号)cml 可根据当前正在整理的序列来指定一个范围。整理序列可以定义等价的类以供在字符范围中使用。如果未指定任何文件,grep 会假定为标准输入。 注意: 1.行被限制为2048个字节。 2.段落(使用-p标志时)长度当前被限制为5000个字符。 3.请不要对特殊文件运行grep命令,这样做可能产生不可预计的结果。 4.输入行不应包含空字符。 5.输入文件应该以换行符作为结束。 6.正则表达式不会对换行符进行匹配。 7.虽然一些标志可以同时被指定,但其中的某些标志会覆盖其它标志。例如,-l选项将优先于所有其它标志。另外,如果您同时指定了-E 和-F标志,则后指定的那个会有优先权。 标志 -b 在每行之前添加找到该行时所在的块编号。使用这个标志有助于通过上下文来找到磁盘块号码。-b标志不能用于来自标准输入和管道的输入。 -c 仅显示匹配行的计数。

zip压缩命令详解

语法:unzip 〔选项〕压缩文件名.zip 各选项的含义分别为: -x 文件列表解压缩文件,但不包括指定的file文件。 -v 查看压缩文件目录,但不解压。 -t 测试文件有无损坏,但不解压。 -d 目录把压缩文件解到指定目录下。 -z 只显示压缩文件的注解。 -n 不覆盖已经存在的文件。 -o 覆盖已存在的文件且不要求用户确认。 -j 不重建文档的目录结构,把所有文件解压到同一目录下。 例1:将压缩文件text.zip在当前目录下解压缩。 $ unzip text.zip 例2:将压缩文件text.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件。 $ unzip -n text.zip -d /tmp 例3:查看压缩文件目录,但不解压。 $ unzip -v text.zip zgrep命令 这个命令的功能是在压缩文件中寻找匹配的正则表达式,用法和grep命令一样,只不过操作的对象是压缩文件。如果用户想看看在某个压缩文件中有没有某一句话,便可用zgrep命令。 linux zip命令zip -r myfile.zip ./*

\将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzip unzip -o -d /home/sunny myfile.zip 把myfile.zip文件解压到 /home/sunny/ -o:不提示的情况下覆盖文件; -d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下; 3.其他 zip -d myfile.zip smart.txt 删除压缩文件中smart.txt文件 zip -m myfile.zip ./rpm_info.txt 向压缩文件中myfile.zip中添加rpm_info.txt文件 ------------------------------------------------------------------------------- 要使用 zip 来压缩文件,在 shell 提示下键入下面的命令: zip -r filename.zip filesdir 在这个例子里,filename.zip 代表你创建的文件,filesdir 代表你想放置新 zip 文件的目录。 -r 选项指定你想递归地(recursively)包括所有包括在 filesdir 目录中的文件。 要抽取 zip 文件的内容,键入以下命令: unzip filename.zip 你可以使用 zip 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:zip -r filename.zip file1 file2 file3 /usr/work/school 上面的命令把 file1、file2、 file3、以及 /usr/work/school 目录的内容(假设这个目录存在)压缩起来,然后放入 filename.zip 文件中。 tar 命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。 下面的参数是根据需要在压缩或解压档案时可选的。 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件

Linux基本命令大全

下面我们来介绍常用基本命令 一、注销,关机,重启 注销系统的logout命令 1,Logout 注销是登陆的相对操作,登陆系统后,若要离开系统,用户只要直接下达logout命令即可: [root@localhost root]#logout Red Hat Linuxrelease 9(Shike) Kernel 2.4.20.8 on an i686 Login: ←回到登陆的画面 2,关机或重新启动的shutdown命令 Shutdown命令可以关闭所有程序,依照用户的需要,重新启动或关机。 参数说明如下: λ立即关机:-h 参数让系统立即关机。范例如下: [root@localhost root]#shutdown –h now ←要求系统立即关机 λ指定关机时间:time参数可指定关机的时间;或设置多久时间后运行shutdown命令,范例如下: [root@localhost root]#shutdown now ←立刻关机 [root@localhost root]#shutdown +5 ←5分钟后关机 [root@localhost root]#shutdown 10:30 ←在10:30时关机 关机后自动重启:-rλ参数设置关机后重新启动。范例如下: [root@localhost root]#shutdown -r now ←立刻关闭系统并重启 [root@localhost root]#shutdown -r 23:59 ←指定在23:59时重启动 3,重新启动计算机的reboot命令 顾名思义,reboot命令是用来重新启动系统的。常用的参数如下: λ-f 参数:不依正常的程序运行关机,直接关闭系统并重新启动计算机。 -Iλ参数:在在重新启动之前关闭所有网络接口。 虽然reboot命令有个参数可以使用,但是一般只需要单独运行reboot命令就可以了 二、文件与目录的操作 列出文件列表的ls命令 1,ls(list)命令是非常有用的命令,用来显示当前目录中的文件和子目录列表。配合参数的使用,能以不同的方式显示目录内容。范例如下: ? 显示当前目录的内容: [tony@free tony]$ ls Desktop mail myinstall.log test.txt ←有两个目录及两个文件夹 ? 当运行ls命令时,并不会显示名称以―.‖开头的文件。因此可加上―-a‖参数指定要列出这些文件。范例如下: [tony@free tony]$ ls –a ? 以―-s‖参数显示每个文件所有的空间,并以―-S‖参数指定按所有占用空间的大小排序。范例如下: [tony@free tony]$ ls –s –S 总计36 4 Desktop 4 mail 24 myinstall.log 4 test.txt ? 在ls命令后直接加上欲显示的目录路径,就会列出该目录的内容。范例如下: [tony@free tony]$ ls –l/usr/games 2,切换目录的cd命令

Excel快速提取文件夹里所有文件名称

Excel快速提取文件夹里所有文件名称 工作中经常会遇到资料录入的情况, 比如一大堆文件, 要用Excel表格分类并做登记, 如下图 上图中一堆的文件, 名字没有任何规律,文件格式也不同, 但是,我们却要求把文件名字和格式一起录入Excel中。 看着这堆东西,头都大了, 还要一个个的录入, 录了名字不算,还要录入格式, 谁来救救我!o(╥﹏╥)o

Excel能拯救你, Excel可以实现自动提取名称和格式, 下面请看我表演 操作步骤 1.在Excel的菜单栏里点选‘公式’项,然后点击‘定义名称’ 2.在弹出的窗口上填写一个自定义名称,这里我先填写‘文件名称’, 3.在引用位置填写=FILES("C:\Users\lzx66xxxx\Desktop\文件01\*.*"), 其中‘C:\Users\lzx66xxxx\Desktop\文件01’是需要读取的文件所在的文件夹的地址,填写好后按确定

4.在表格中输入=INDEX(文件名称,ROW(A1)),然后按回车键,就会出现第 一个文件的名称和格式了。(公式中的‘文件名称’是我们之前自定义的名称,A1是我们当前输入公式的单元格坐标) 5.选择第一个名称的单元格,然后将鼠标移动到右下角的小黑点上,将鼠标 图标变成黑色十字

6.鼠标对着小黑色点时,按住鼠标左键不放,一直往下拉,就会显示我们需 要提取的文件夹中所有文件的名称和格式了 7.当拖动公式时,如果出现以下符号,就代表文件夹里的文件已经全部提 取,到这里就代表录入完毕了

同学们,如果我们有两个文件夹, 我们想对比一下两个文件夹中有什么共同内容和不同内容时,怎么核对呢? 用以上方法导入名称后, 能不能通过Excel快速核对呢? 答案肯定是:能的!!! 那么具体怎么操作呢? 下一篇文章分享方法, 各位同学可以先关注公众号哦

相关文档
最新文档