![多个文件较少;输出文件名的命令](https://linux22.com/image/73646/%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%E8%BE%83%E5%B0%91%EF%BC%9B%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6%E5%90%8D%E7%9A%84%E5%91%BD%E4%BB%A4.png)
我希望能够使用手动浏览许多文件less *.txt
,然后使用:n
.如果我确定需要处理一个文件,那么我希望能够给出一个命令,例如将当前文件名发送到 stderr,这样一旦我完成所有文件的处理,我就会有一个要处理的文件名列表。这样的事情可能吗?是否有其他工具更适合此目的?
答案1
您可以设置自己的less
特殊命令键。创建文件~/.lesskey
并在开头放置以下两行:
#command
ok shell echo % >>/tmp/list\n
然后给出命令
lesskey
编译文件。less
在文件上运行命令,当您想要保存文件名时,输入 2 个字符ok
。您将看到回显:
!echo myfilename >>/tmp/list
!done (press RETURN)
它将当前文件名 (%) 保存到/tmp/list
.按回车键继续。我ok
随意选择了命令。您可以使用您喜欢的任何单个字符或字符序列。您可以将该命令附加到该行的:n
末尾,也可以转到下一个文件。shell
~/.lesskey
如果你没有,lesskey
我在上面的文件上运行它并通过它,base64
因为它包含一些二进制文件。也许你可以尝试使用这个:
echo 'AE0rR2MaAG9rAJtlY2hvICUgPj4vdG1wL2xpc3QKOm4AZQAAdgAAeEVuZA==' | base64 -d >~/.less
答案2
一种方法是编写一个用最少的击键完成任务的脚本,但是如果您没有时间编写并彻底测试脚本,那么根据您拥有的 less 版本,是的,可以使用 less。
使用less
版本 444 进行测试,以下是示例演练。
首先,假设你有四个文件 a.txt b.txt c.txt d.txt
$ less *.txt
a.txt 看起来不错,因此您可以使用以下命令查看下一步:n
b.txt 看起来很糟糕,因此要对其进行标记,请键入:
! echo % | tee -a bad.txt
较少会回应:
b.txt
!done (press RETURN)
你继续:n
。
c.txt 看起来没问题。你继续:n
d.txt 看起来也很糟糕,但您不必再次重新输入每个按键,只需!
向上箭头,它会自动填充最后一个命令,并保存d.txt
到bad.txt
那你q
就少戒点。
现在您可以查看保存的列表:
$ cat bad.txt
b.txt
d.txt
解释
! shell command
当然运行 shell 命令,其中 % 是当前文件- using
tee
是可选的,只是为了在运行命令后有一个附加指示符,指示您刚刚保存的文件名。 -a
附加,否则会覆盖,并且您的 bad.txt 只有一条记录- 您也可以只
! echo % >> bad.txt
附加到 bad.txt
答案3
当我需要做这样的事情时,我将使用一个选项卡式终端,less
在一个选项卡和vi
相邻选项卡中。
当我到达要标记的文件时,我将双击屏幕底部的文件名less
,切换到选项vi
卡,中键单击“粘贴”并点击ENTER
,然后切换回选项less
卡。
如果有超过几十个文件(即可能需要花费几分钟以上的时间),我将尝试找出某种使用一个或多个常用工具自动执行选择过程的方法:grep
、awk
、perl
等。
grep
用于简单搜索awk
或perl
更复杂的搜索。