UNIX命令-查找


9

我正在尝试学习UNIX命令,并且正在玩这个游戏来学习,但目前我真的很困。我通过ssh进入服务器,目录中充满了随机文件和文件夹,而下一级密码位于其中一个文件中。有人告诉我该文件具有以下属性:

  • 人类可读
  • 1033字节
  • 不可执行

我猜想我应该使用该find命令,find ! -executable但是我尝试过,但是返回了文件负载。我可以在手册或在线上找到的唯一可读的帮助是打印出可读的文件大小。所以我在那里迷路了?

我也尝试过,find ~ -size 1033b但是什么也没返回。但是当我尝试find ~ -size -1033b它返回目录中的每个文件。


我真的很想知道更多关于这个游戏的信息!
ivanivan

2
@ivanivan bandit.overthewire.org
avgvstvs

Answers:


16

要过滤掉人类可读的文件名,可以使用[:print:]可打印字符类名。您可以在的手册中找到有关此类的更多信息grep

find . -type f -size 1033c -name "[[:print:]]*" ! -executable

再三考虑,“人类可读”的要求可能是指文件的内容,而不是文件的名称。换句话说,您将搜索文本文件。这有点棘手。正如@D_Bye在注释中建议的那样,然后应使用file命令确定文件内容类型。但是,file在管道之后运行不是一个好主意,因为它将使显示文件名的任务变得复杂。这是我的建议:

find . -type f -size 1033c ! -executable -exec sh -c 'file -b $0 | grep -q text' {} \; -print

这是file-part的简要工作方式:

  • 对于每个满足所有先前条件(类型,大小,不可执行)的-exec谓词,将执行谓词。sh -c 'file -b $0 | grep -q text' FILENAMEFILENAME
  • 对于每个文件,shell(sh)运行以下简短脚本file -b $0 | grep -q text,并替换$0为文件名。
  • file程序确定每个文件的内容类型并输出此信息。该-b选项可防止打印每个测试文件的名称。
  • grep过滤来自file程序的输出,搜索包含“ text”的行。(亲自了解一下file命令的典型输出是什么样子。)
  • 但是grep不会输出过滤的文本,因为它具有-q(quiet)选项。它所做的只是将其退出状态更改为0(代表“ true”-找到过滤的文本)或1(表示“错误”-文本“ text”未出现在的输出中file)。
  • 来自的正确/错误退出状态grep将进一步传递sh给,find并作为整个“ -exec sh -c 'file $0 | grep -q text' {} \;”测试的最终结果。
  • 如果上述测试返回true-print则执行命令(即打印测试文件的名称)。

我知道这很旧,但我想补充一点,使用find . -type f -size 1033c还将返回完全相同的响应。
布兰登·贝内菲尔德

8
find . -type f -readable -size 1033c ! -executable

请注意,我使用c而不是b文件大小。 b用于512字节块。 c用于实际字节。


2
我不认为这-readable是人类可读的(即不是二进制的)
hhaamu 2012年

1
@hhaamu-对 但是,过滤掉用户无权读取的文件可能还不错!为了确定文件是否包含人类可读的内容,请将传回的名称find传递给file
D_Bye 2012年

2

我写的只是:

find -size 1033c ! -executable

并得到了文件。显然,人类可读的部分是让您失望。


0
find . -readable -size 1033c \! -executable

-可读意味着帐户可以读取这些文件,但这不一定使它们可读。
Anthon 2014年

0

我认为对于游戏来说,正确的语法是:

file ./* 

您会得到一份回报,列出每个文件的组成。对于您要在Bandit游戏中尝试完成的任务,它确实非常有效。此任务的真正实质是每个文件都以-(连字符)开头。


您可以通过在该命令中添加连字符来改进file ./-*此功能。
ConstantFun

0

我认为这是涵盖所有3个条件的最佳实际答案

find inhere/ -type f -size 1033c ! -executable |xargs file | grep text

但是正如许多人所说的那样,可执行文件和人类可读的文件会让我们失望,因此使用

find inhere/ -type f -size 1033c 

够了!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.