标签: find

如何按文件扩展名递归复制文件?

我想将子目录中具有特定扩展名的所有文件复制到不同的文件夹。我不想维护目录结构,我只想将找到的所有文件复制到不同的文件夹中。

我用这个命令来做到这一点:

cp `find . -name "*.aac"` /media/moasad/New\ Volume/Media\ files/Avengers/Aud/aac/
Run Code Online (Sandbox Code Playgroud)

但是,我注意到,如果它遇到文件夹或文件中带有空格的文件,则该cp函数不知道该怎么做,并且出现如下错误:

cp: cannot stat ‘./Temporary_Items/martin/Problem’: No such file or directory
cp: cannot stat ‘Files/nav-YCA136843.aac’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

请注意,它的一个文件: ./Temporary_Items/martin/Problem Files/nav-YCA136843.aac

但是由于“问题文件”中的空间,它很困惑。

command-line files find cp

3
推荐指数
1
解决办法
4076
查看次数

按日期复制文件

如何根据上次编辑文件的时间复制文件夹中的文件?假设我想将我今天上次编辑的所有文件从c:复制到我的文件夹bak。我怎样才能做到这一点?

我知道可以像这样完成常规复制命令:

cp source destination
Run Code Online (Sandbox Code Playgroud)

例如。

cp *.c bak
Run Code Online (Sandbox Code Playgroud)

有什么建议?

command-line bash find cp

3
推荐指数
1
解决办法
2万
查看次数

如何使用终端包含/排除许多不同的文件/文件夹

我正在使用find . -type f -mtime 0终端中的功能搜索在最后一天编辑过的文件。我想在查询中排除一些文件和文件夹,例如.DS_Store文件和.sh文件。

目前我正在这样做:

find . -type f -not -path "*.DS_Store" -and -not -path "*.sh" -mtime 0

我还有很多要排除的文件,我想知道是否可以缩短表达式。我不想写:

-not -path "PathHere" -and -not -path "AnotherPathHere" 等等。

有什么建议?

command-line bash find

3
推荐指数
1
解决办法
585
查看次数

删除今天之前创建的文件

我想搜索创建日期早于今天的文件。
我愿意 :

find $HOME -type f -name "myFile_*.sql.zip" -mtime +1
Run Code Online (Sandbox Code Playgroud)

但它不返回任何内容,它至少应该返回一个文件。

我哪里错了?

command-line files find

3
推荐指数
1
解决办法
4887
查看次数

如何仅列出给定路径中没有子文件夹的文件夹?

问题:我已经给出了目录结构

??? kat11
?   ??? kat21
?   ?   ??? Dokument\ bez\ nazwy
?   ??? kat22
?       ??? kat31
?       ?   ??? Dokument\ bez\ nazwy
?       ??? kat32
?           ??? Dokument\ bez\ nazwy
??? kat12
?   ??? kat21
?       ??? Dokument\ bez\ nazwy
??? kat13
?   ??? Dokument\ bez\ nazwy
??? kat14
    ??? Kat21
        ??? Kat32
            ??? Dokument\ bez\ nazwy
Run Code Online (Sandbox Code Playgroud)

我只想列出所有具有完整路径的子文件夹。

例如

1. /kat14/kat21/kat32/Dokument\ bez\ nazwy
2. /kat11/kat22/kat31/Dokument\ bez\ nazwy
3. /kat11/kat22/kat32/Dokument\ bez\ nazwy
4. /kat12/kat21/Dokument\ bez\ nazwy
Run Code Online (Sandbox Code Playgroud)

command-line directory find

3
推荐指数
1
解决办法
3151
查看次数

find 命令中通配符的奇怪行为

globbing 是 shell 的一个特性吗?

我学会了如何在 find 命令中使用通配符,但今天我看到了一个奇怪的行为。

当我在搜索位置以外的任何地方时,我不需要单引号或双引号进行通配

$ pwd
/home
$ find / -name *c
...
it is ok
Run Code Online (Sandbox Code Playgroud)

$ pwd
/
$ find / -name *c
find: paths must precede expression: proc
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
Run Code Online (Sandbox Code Playgroud)

发生什么事?

command-line bash find

3
推荐指数
1
解决办法
1138
查看次数

删除所有扩展名为“.sh”的文件,但保留一个与终端扩展名匹配的文件

其实这种要求太多了我觉得。

但我想删除与扩展名“.sh”(仅限当前文件夹)匹配的所有文件,我可以使用以下命令执行此操作:

find . -maxdepth 1 -type f -name '*.sh' -exec rm {} +
Run Code Online (Sandbox Code Playgroud)

但我仍然想保持当前文件夹中的文件“cron.sh”不受影响。

如何在单个命令行中实现这一点?

command-line find

3
推荐指数
1
解决办法
542
查看次数

如何解释查找的信息页面

这是我打字时得到的开始 info find

find [-H] [-L] [-P] [-D DEBUGOPTIONS] [-OLEVEL] [FILE...] [EXPRESSION]

 'find' searches the directory tree rooted at each file name FILE by
Run Code Online (Sandbox Code Playgroud)

评估它在树中找到的每个文件的 EXPRESSION。

我认为 [] 中的某些内容是可选的,这是否准确?还是强制性的?

以下是 find 命令的一些示例:

How can I recursively find all files in current and subfolders based on wildcard matching?

find . -name "foo*"
Run Code Online (Sandbox Code Playgroud)

以下如何适合这里:

.
-name
"foo*"
Run Code Online (Sandbox Code Playgroud)

此信息是否会查找我过时数十年的文本?
或者只是不正确?
还是我读错了?

编辑:

看到第一个答案后,我必须同意这不是表达。至少从 man 和 info 页面来看。

EXPRESSION
   The part of the command line after the list of starting points is the expression. …
Run Code Online (Sandbox Code Playgroud)

find info

3
推荐指数
1
解决办法
186
查看次数

这个命令会做什么:“find . -ls \(pattern \)”?

我知道 find 命令的用途,但我不知道括号的用途。请解释。

command-line find

3
推荐指数
1
解决办法
625
查看次数

如何找到特定日期的图片?

我想在旧磁盘上查找具有特定日期、
磁盘名称的旧图片:/dev/sdf
我应该使用哪些命令?

command-line find

3
推荐指数
1
解决办法
2479
查看次数

标签 统计

find ×10

command-line ×9

bash ×3

cp ×2

files ×2

directory ×1

info ×1