⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch09_24.htm

📁 the unix power tools
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 9] 9.24 Get File List by Editing Output of ls -l, grep, etc. </TITLE><METANAME="DC.title"CONTENT="UNIX Power Tools"><METANAME="DC.creator"CONTENT="Jerry Peek, Tim O'Reilly &amp; Mike Loukides"><METANAME="DC.publisher"CONTENT="O'Reilly &amp; Associates, Inc."><METANAME="DC.date"CONTENT="1998-08-04T21:35:31Z"><METANAME="DC.type"CONTENT="Text.Monograph"><METANAME="DC.format"CONTENT="text/html"SCHEME="MIME"><METANAME="DC.source"CONTENT="1-56592-260-3"SCHEME="ISBN"><METANAME="DC.language"CONTENT="en-US"><METANAME="generator"CONTENT="Jade 1.1/O'Reilly DocBook 3.0 to HTML 4.0"><LINKREV="made"HREF="mailto:online-books@oreilly.com"TITLE="Online Books Comments"><LINKREL="up"HREF="ch09_01.htm"TITLE="9. Saving Time on the Command Line"><LINKREL="prev"HREF="ch09_23.htm"TITLE='9.23 Workaround for "Arguments too long&quot; Error'><LINKREL="next"HREF="ch09_25.htm"TITLE="9.25 The C Shell repeat Command "></HEAD><BODYBGCOLOR="#FFFFFF"TEXT="#000000"><DIVCLASS="htmlnav"><H1><IMGSRC="gifs/smbanner.gif"ALT="UNIX Power Tools"USEMAP="#srchmap"BORDER="0"></H1><MAPNAME="srchmap"><AREASHAPE="RECT"COORDS="0,0,466,58"HREF="index.htm"ALT="UNIX Power Tools"><AREASHAPE="RECT"COORDS="467,0,514,18"HREF="jobjects/fsearch.htm"ALT="Search this book"></MAP><TABLEWIDTH="515"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch09_23.htm"TITLE='9.23 Workaround for "Arguments too long&quot; Error'><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT='Previous: 9.23 Workaround for "Arguments too long&quot; Error'BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 9<BR>Saving Time on the Command Line</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch09_25.htm"TITLE="9.25 The C Shell repeat Command "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 9.25 The C Shell repeat Command "BORDER="0"></A></TD></TR></TABLE>&nbsp;<HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-7630">9.24 Get File List by Editing Output of ls -l, grep, etc. </A></H2><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-11252"></A><ACLASS="indexterm"NAME="AUTOID-11255"></A><ACLASS="indexterm"NAME="AUTOID-11258"></A><ACLASS="indexterm"NAME="AUTOID-11261"></A><ACLASS="indexterm"NAME="AUTOID-11264"></A>It seems like I'm always using <EMCLASS="emphasis">ls</EM>-also, usually, <EMCLASS="emphasis">-l</EM> andmaybe other options&nbsp;- to find out which of my files I need to dosomething to.I also use <EMCLASS="emphasis">grep</EM> or one of the<SPANCLASS="link">other <EMCLASS="emphasis">grep</EM>s (<ACLASS="linkend"HREF="ch27_01.htm#UPT-ART-7420"TITLE="Different Versions of grep ">27.1</A>)</SPAN>to search for files that have certain text in them.No matter what command I use, I<SPANCLASS="link">redirect the output (<ACLASS="linkend"HREF="ch13_01.htm#UPT-ART-1023"TITLE="Using Standard Input and Output">13.1</A>)</SPAN>to a<SPANCLASS="link">temporary file (<ACLASS="linkend"HREF="ch21_02.htm"TITLE="A Better Place for Temporary Files: /tmp ">21.2</A>, <ACLASS="linkend"HREF="ch21_03.htm"TITLE="Unique Names for Temporary Files ">21.3</A>)</SPAN>and then edit the file.After the editing, I have a list of filenames that I can use inside<SPANCLASS="link">backquotes (<ACLASS="linkend"HREF="ch09_16.htm"TITLE="Command Substitution ">9.16</A>)</SPAN>with some other command&nbsp;- or store in a<SPANCLASS="link">shell variable (<ACLASS="linkend"HREF="ch06_08.htm"TITLE="Shell Variables ">6.8</A>)</SPAN>.</P><PCLASS="para">Here are two examples.These show the <EMCLASS="emphasis">vi</EM> editor, but you can use any other UNIX editorthat handles plain text files.Depending on what you need, there are probably UNIX utilities that can help.</P><DIVCLASS="sect2"><H3CLASS="sect2"><ACLASS="title"NAME="UPT-ART-7630-SECT-1.1">9.24.1 What Files Have I Just Edited? </A></H3><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-11281"></A>While I was working on this book, my current directory could have around1000 files.If I wanted to find out which files I'd edited today, I would use<SPANCLASS="link"><EMCLASS="emphasis">ls -lt</EM> (<ACLASS="linkend"HREF="ch16_02.htm"TITLE="Finding Oldest or Newest Files with ls -t and ls -u ">16.2</A>)</SPAN>to get a listing of files with the most recently modifiedlisted first.Edit the file, delete all lines except files I'd edited today, thenremove everything from each line except the filename.Finally, use backquotes and<SPANCLASS="link"><EMCLASS="emphasis">rcp</EM> (<ACLASS="linkend"HREF="ch01_33.htm"TITLE="UNIX Networking and Communications ">1.33</A>)</SPAN>to copy the files to the <EMCLASS="emphasis">ptbackup</EM> directory on the <EMCLASS="emphasis">fserver</EM>computer:</P><OLCLASS="orderedlist"><LICLASS="listitem"><PCLASS="para">Make the file list and start the editor:</P><PCLASS="para"><TABLECLASS="screen.co"BORDER="1"><TR><THVALIGN="TOP"><PRECLASS="calloutlist">&#13;<ACLASS="co"HREF="ch11_03.htm"TITLE="11.3 My Favorite Is !$ ">!$</A> &#13;</PRE></TH><TDVALIGN="TOP"><PRECLASS="screen">% <CODECLASS="userinput"><B>ls -lt &gt; /tmp/bk$$</B></CODE>% <CODECLASS="userinput"><B>vi !$</B></CODE>vi /tmp/bk28182</PRE></TD></TR></TABLE></P></LI><LICLASS="listitem"><PCLASS="para">Delete all lines except the ones for files from February 29:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">total 4294                                           <ICLASS="lineannotation">&lt;&lt; delete</I>-rw-r--r--  1 jerry        1529 Feb 29 17:25 a7630-rw-r--r--  1 jerry        1864 Feb 29 16:29 a0147   ...<ICLASS="lineannotation">Keep these lines</I>...-rw-r--r--  1 jerry        1772 Feb 29 09:01 a1900-rw-r--r--  1 jerry        2693 Feb 29 08:51 a0031-rw-r--r--  1 jerry         744 Feb 28 23:35 a7600   <ICLASS="lineannotation">&lt;&lt; delete</I>-rw-r--r--  1 jerry        1957 Feb 28 22:18 a5210   <ICLASS="lineannotation">&lt;&lt; delete</I>   ...<ICLASS="lineannotation">Delete the rest</I>...</PRE></BLOCKQUOTE></P><PCLASS="para"></P></LI><LICLASS="listitem"><PCLASS="para">In <EMCLASS="emphasis">vi</EM>, use the<SPANCLASS="link"><CODECLASS="literal">|</CODE> (vertical bar) command (<ACLASS="linkend"HREF="ch30_34.htm"TITLE="vi Line Commands vs. Character Commands ">30.34</A>)</SPAN>to find the columnnumber just before the filenames start.For example, here's where the commands <CODECLASS="literal">30|</CODE>, <CODECLASS="literal">39|</CODE>,and <CODECLASS="literal">45|</CODE> moved the cursor:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">-rw-r--r--  1 jerry        1529 Feb 29 17:25 a7630                           30^      39^   45^</PRE></BLOCKQUOTE></P><PCLASS="para"></P></LI><LICLASS="listitem"><PCLASS="para">So, I want to delete columns 1-45 from every line.The easiest way is a<SPANCLASS="link">filter-through (<ACLASS="linkend"HREF="ch30_22.htm"TITLE="Filtering Text Through a UNIX Command ">30.22</A>)</SPAN>with<SPANCLASS="link"><EMCLASS="emphasis">colrm&nbsp;1&nbsp;45</EM> (<ACLASS="linkend"HREF="ch35_15.htm"TITLE="Cutting Columns with colrm ">35.15</A>)</SPAN>or<SPANCLASS="link"><EMCLASS="emphasis">cut -c46-</EM> (<ACLASS="linkend"HREF="ch35_14.htm"TITLE="Cutting Columns or Fields with cut ">35.14</A>)</SPAN>:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen"><CODECLASS="userinput"><B>:%!cut -c46-</B></CODE></PRE></BLOCKQUOTE></P><PCLASS="para"></P></LI><LICLASS="listitem"><PCLASS="para">Now the file looks like this&nbsp;- just the filenames:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">a7630a0147...a1900a0031</PRE></BLOCKQUOTE></P><PCLASS="para">I can sort it with<CODECLASS="literal">:%!sort</CODE>if I want to&nbsp;- or do more editing.Then I write the file and quit.</P></LI><LICLASS="listitem"><PCLASS="para">Feed the list of filenames to the UNIX command I want to run:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>rcp `cat /tmp/bk$$` fserver:ptbackup</B></CODE></PRE></BLOCKQUOTE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -