Linux 使用'时出现问题;查找';在狂欢节上
下面我将学习一些Linux的基本技能 在该部分,有两个练习: *更改到您的主目录。创建一个新目录并复制所有 将/etc目录的文件插入其中。确保你也能复制 在/etc的子目录中的文件和目录! (递归副本) *切换到新目录,并为启动的文件创建一个目录 使用大写字符,一个用于以小写字母开头的文件 大小写字符。将所有文件移动到适当的目录。使用 尽可能少的命令 第一部分很简单,但我在第二部分遇到了问题(尽管我认为它也应该很简单) 我成功地完成了第一部分-也就是说,我在~/newetc中有一个/etc文件夹的副本-所有文件都递归地复制到子目录中 我已经创建了~/newetc/upper和~/newetc/lower目录 我的意图是做一些类似mv“查找…”的事情/举个例子 但首先我想我应该确保我可以找到所有的文件与大写/小写分开。在这一点上我失败了 我认为find~/newetc[A-Z].*(还尝试了:find~/newetc-name[A-Z].*)来查找所有大写文件,但它只是不返回任何结果 更奇怪的是:find~/newetc-name[a-z].*)只返回两个文件,当然还有更多的文件。。。 知道我做错了什么吗 谢谢你抽出时间Linux 使用'时出现问题;查找';在狂欢节上,linux,bash,Linux,Bash,下面我将学习一些Linux的基本技能 在该部分,有两个练习: *更改到您的主目录。创建一个新目录并复制所有 将/etc目录的文件插入其中。确保你也能复制 在/etc的子目录中的文件和目录! (递归副本) *切换到新目录,并为启动的文件创建一个目录 使用大写字符,一个用于以小写字母开头的文件 大小写字符。将所有文件移动到适当的目录。使用 尽可能少的命令 第一部分很简单,但我在第二部分遇到了问题(尽管我认为它也应该很简单) 我成功地完成了第一部分-也就是说,我在~/newetc中有一个/etc文件夹
编辑:(我试图阅读查找命令btw的Man,但没有找到任何结果)默认情况下,
-name
参数不使用完整的正则表达式。因此,只有当第二个字符是点时,[A-Z].
才会匹配
使用表达式
[A-Z]*
,或使用-regex
和-regextype
使用真正的正则表达式进行匹配。默认情况下,-name
参数不采用完整的正则表达式。因此,只有当第二个字符是点时,[A-Z].
才会匹配
使用表达式
[A-Z]*
,或使用-regex
和-regextype
使用真正的正则表达式进行匹配。如果要查找所有以大写字母开头的名称,必须使用
find . -name "[A-Z]*"
不是
否则,您将尝试查找所有以大写字母开头并具有大写字母的文件。紧跟在之后如果你想找到所有以大写字母开头的名字,你必须使用
find . -name "[A-Z]*"
不是
否则,您将尝试查找所有以大写字母开头并具有大写字母的文件。就在之后,您需要使用引号
find ~/new_etc -name "[A-Z]*"
find ~/new_etc -name "[a-z]*"
你需要使用引号
find ~/new_etc -name "[A-Z]*"
find ~/new_etc -name "[a-z]*"
如果你想使用regexp,那么你必须使用
-regex
(或者-iregex
)。如果你想使用regexp,那么你必须使用-regex
(或者-iregex
)。要查找内容,其他答案会告诉你怎么做
要移动查找结果,请使用-exec
标志(在newetc
中):
为了找到东西,其他的答案告诉你怎么做 要移动查找结果,请使用
-exec
标志(在newetc
中):
-name
参数采用a,而不是a(这两个页面都非常有用)。因此,点对这个参数没有特殊的意义-它被解释为文字点字符。此外,在正则表达式中,*
表示“0或更多的上一个表达式”,而在全局表达式中,它表示“任何字符的任何数量”。因此,正如其他人所指出的那样,以下内容应为当前目录下以大写字符开头的任何文件:
find . -name '[A-Z]*'
-name
参数采用a,而不是a(这两个页面都非常有用)。因此,点对这个参数没有特殊的意义-它被解释为文字点字符。此外,在正则表达式中,*
表示“0或更多的上一个表达式”,而在全局表达式中,它表示“任何字符的任何数量”。因此,正如其他人所指出的那样,以下内容应为当前目录下以大写字符开头的任何文件:
find . -name '[A-Z]*'
[A-Z]*是否只返回大写字母为0或以上的单词?另外:-regex不会给出任何不适用于小写或大写模式([a-z].*或[a-z].*)的结果,-regextype抛出错误。@Lost_DM:
-name
需要一个shell全局模式,而不是regex。globbing模式中的*
与正则表达式中的*
几乎相同(可能是因为
经常出现在文件名中,没有人想逃避如此常见的问题)。难道[a-Z]*不会只返回只有0个或更多大写字母的单词吗?另外:-regex不会给出任何不适用于小写或大写模式([a-z].*或[a-z].*)的结果,-regextype抛出错误。@Lost_DM:-name
需要一个shell全局模式,而不是regex。globbing模式中的*
与正则表达式中的*
几乎相同(可能是因为
经常出现在文件名中,没有人想逃避如此常见的东西)。请仔细阅读文档,一切都在那里。也许info-find
会比man-find
更努力地阅读文档,一切都在那里。也许info-find
会比man-find
@i0b0更好请。。。在向下投票之前,在shell中键入命令。。。它实际上是有效的,我只是测试了它,如果你不相信它,我会将结果粘贴给你。这里是:“find[A-Z]*”返回本地文件夹中的LockDebug.log!请在需要时保留向下投票!我在Ubuntu上,它返回当前目录下的每个文件名。你在有更多文件的目录中试过了吗?我用的是cern的发行版。它是有效的。但是,如果它在ubuntu下无法工作,我会在中添加一个-name