Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用'时出现问题;查找';在狂欢节上_Linux_Bash - Fatal编程技术网

Linux 使用'时出现问题;查找';在狂欢节上

Linux 使用'时出现问题;查找';在狂欢节上,linux,bash,Linux,Bash,下面我将学习一些Linux的基本技能 在该部分,有两个练习: *更改到您的主目录。创建一个新目录并复制所有 将/etc目录的文件插入其中。确保你也能复制 在/etc的子目录中的文件和目录! (递归副本) *切换到新目录,并为启动的文件创建一个目录 使用大写字符,一个用于以小写字母开头的文件 大小写字符。将所有文件移动到适当的目录。使用 尽可能少的命令 第一部分很简单,但我在第二部分遇到了问题(尽管我认为它也应该很简单) 我成功地完成了第一部分-也就是说,我在~/newetc中有一个/etc文件夹

下面我将学习一些Linux的基本技能

在该部分,有两个练习:

*更改到您的主目录。创建一个新目录并复制所有 将/etc目录的文件插入其中。确保你也能复制 在/etc的子目录中的文件和目录! (递归副本)

*切换到新目录,并为启动的文件创建一个目录 使用大写字符,一个用于以小写字母开头的文件 大小写字符。将所有文件移动到适当的目录。使用 尽可能少的命令

第一部分很简单,但我在第二部分遇到了问题(尽管我认为它也应该很简单)

我成功地完成了第一部分-也就是说,我在~/newetc中有一个/etc文件夹的副本-所有文件都递归地复制到子目录中

我已经创建了~/newetc/upper和~/newetc/lower目录

我的意图是做一些类似mv“查找…”的事情/举个例子

但首先我想我应该确保我可以找到所有的文件与大写/小写分开。在这一点上我失败了

我认为find~/newetc[A-Z].*(还尝试了:find~/newetc-name[A-Z].*)来查找所有大写文件,但它只是不返回任何结果

更奇怪的是:find~/newetc-name[a-z].*)只返回两个文件,当然还有更多的文件。。。 知道我做错了什么吗

谢谢你抽出时间


编辑:(我试图阅读查找命令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