我想将子目录中具有特定扩展名的所有文件复制到不同的文件夹。我不想维护目录结构,我只想将找到的所有文件复制到不同的文件夹中。
我用这个命令来做到这一点:
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
但是由于“问题文件”中的空间,它很困惑。
如何根据上次编辑文件的时间复制文件夹中的文件?假设我想将我今天上次编辑的所有文件从c:复制到我的文件夹bak。我怎样才能做到这一点?
我知道可以像这样完成常规复制命令:
cp source destination
Run Code Online (Sandbox Code Playgroud)
例如。
cp *.c bak
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我正在使用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" 等等。
有什么建议?
我想搜索创建日期早于今天的文件。
我愿意 :
find $HOME -type f -name "myFile_*.sql.zip" -mtime +1
Run Code Online (Sandbox Code Playgroud)
但它不返回任何内容,它至少应该返回一个文件。
我哪里错了?
问题:我已经给出了目录结构
??? 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) 我学会了如何在 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)
发生什么事?
其实这种要求太多了我觉得。
但我想删除与扩展名“.sh”(仅限当前文件夹)匹配的所有文件,我可以使用以下命令执行此操作:
find . -maxdepth 1 -type f -name '*.sh' -exec rm {} +
Run Code Online (Sandbox Code Playgroud)
但我仍然想保持当前文件夹中的文件“cron.sh”不受影响。
如何在单个命令行中实现这一点?
这是我打字时得到的开始 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 命令的用途,但我不知道括号的用途。请解释。