我有一个来自MS-DOS背景的不幸经历-但至少这使我意识到Linux的功能强大得多。我一直在努力使Linux-Fu达到同等水平,但是使用DOS可以完成几件事,但我不确定如何最轻松地使用Linux 来完成:
重命名多个文件-使用两个通配符
c:\> dir
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
c:\>rename *.txt *.bak
c:\> dir
Directory of c:\
file1.bak
file2.bak
file3.bak
file4.bak
我知道我可以find -exec
在这里使用,但是有可能使用较短的语法-也许mv
带有一些特殊的标志或语法?我猜想关键是第二个 *
通配符,因为linux的第一个不应该有问题(即我知道如何选择要使用通配符重命名的文件)
重命名单个文件-使用一个通配符
c:\> dir
Directory of c:\
file1.txt
c:\>rename file1.txt *.bak
c:\> dir
Directory of c:\
file1.bak
重命名冗长且笨拙的文件名时,这将特别有用。我以为也许我可以用mv file1.txt $1.bak
它最终file1.txt.bak
接受,但我不确定您是否可以$1
使用shell命令内联引用参数。同样,在此特定情况下,ms-dos如何对*
通配符进行盲目化以用作部分文件名的捕获/替换匹配也很方便。
使用通配符过滤目录列表
c:\> dir
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
text.txt
\temp (directory)
c:\> dir file*
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
c:\> t*
Directory of c:\
text.txt
\temp (directory)
我不确定执行此操作的正确语法是什么ls
,或者甚至是可能的。如果我做了类似的ls t*
事情,它将递归到以开头的目录t
。我的解决方法是一直在使用find . --max-depth 1 -iname "t*"
或类似的东西ls -al | grep t
-两者都不是那么简单和简短dir t*
。
最后,我知道我可以设置别名以使这些长命令更短,但是我想学习一些现成的linux-fu来完成这些事情,因为有时您连接到远程系统或正在工作在新机器上。
那么,如何mv
和ls
文件使用与过去相同的方式dir
和rename
文件?