手动排序随机文本文件的最佳方法?

1 linux file-management sorting

我有大约 1000 个文本文件,我需要查看每个文件,如果是正确的,请将其移动到一个文件夹中。我只能按长度/大小进行基本排序,我不能 grep 因为文本是随机的。除了手动打开+将每个保存在gedit中之外,我还能如何做到这一点。我在 Ubuntu Linux 上。谢谢

我已经根据大小、字数、greps、日期等进行了所有的排序。这是剩下的。我试图找到一种简单的方法来查看+保存/忽略其余部分。

int*_*ted 5

我猜你可能不使用vim......所以也许这只是学习它的动力,或者可能是一个简短的教程......

$ vim *
Run Code Online (Sandbox Code Playgroud)

将打开所有文件;

:!mkdir mine/; mkdir notmine/
Run Code Online (Sandbox Code Playgroud)

将创建名为“mine”和“notmine”的目录;

:!mv % mine/
Run Code Online (Sandbox Code Playgroud)

将当前文件移动到一个名为“mine”的目录;

:bdel
Run Code Online (Sandbox Code Playgroud)

将从 vim 正在处理的文件中删除该文件并移至下一个;

:!mv % notmine/
Run Code Online (Sandbox Code Playgroud)

将当前文件移动到名为“notmine”的目录。这些移动命令发生了什么

  • : 进入命令行模式
  • ! 启动一个 shell 命令
  • %导致 vim 替换当前文件的名称。 如果任何文件名中包含空格,则需要双引号引用该%参数,例如:!mv "%" mine/.

点击:,然后b,然后向上箭头:bdel再次获取命令。

点击:,然后!mv,然后重复向上箭头以循环浏览您之前的!mv ...命令。您也可以只输入:!然后向上箭头,但这也将获得!mkdir...命令。

如果您还没有猜到,vim 的“命令行模式”中的向上箭头(您:在“正常模式”下按输入的内容)将导致它执行以您已经输入的任何内容开头的先前命令那里。


此外,如果您之前没有任何 vim 经验,我必须首先赞扬您做出如此大胆的举动,然后继续通知您,如果您在任何时候不小心按了键盘上的键,您开始在文件中实际输入内容,或者其他事情出乎意料,点击<ESC>几次,然后u撤消您不小心所做的任何更改。如果你回溯得太远(对于这个例子来说并不是真正的问题,因为你实际上不会修改任何文件),你<CTRL>-R会重做你刚刚取消的东西。这<ESC>将使您退出插入模式或可视模式,回到正常模式,这是所有这些命令实际工作的地方。


好吧..在那小小的 PSA 之后,回到我们定期安排的节目。

为了使您的文件处理更高效,您可以设置几个宏:

qm:!mv % mine/<CR>:bdel<CR>q
Run Code Online (Sandbox Code Playgroud)

这实际上具有移动当前文件并将其从 vim 的“缓冲区列表”中删除的效果,因此在设置此宏时请确保它是您的文件之一。请注意,<CR>此处表示您当时按下了 ENTER 键;实际上不要输入<CR>.

qn:!mv % notmine/<CR>:bdel<CR>q
Run Code Online (Sandbox Code Playgroud)

同样的交易在这里。

然后将文件移动到“mine”目录并在缓冲区列表中移动,您可以

@m
Run Code Online (Sandbox Code Playgroud)

或者如果它不是你的

@n
Run Code Online (Sandbox Code Playgroud)

实际上,将这些宏映射到键盘上相距更远的字母可能比mand n..更明智,但这是基本思想。