![cp 命令语法难度](https://linux22.com/image/1123134/cp%20%E5%91%BD%E4%BB%A4%E8%AF%AD%E6%B3%95%E9%9A%BE%E5%BA%A6.png)
我从一个故障硬盘中拯救了许多文件。它们位于 500 个子目录中,每个子目录中包含 500 个文件。
我正在尝试将所有文件夹中的所有文件复制到新的主题目录中(例如 jpg、mp3 等)
在顶层目录(MikeO)中我使用以下命令:
cp -R * /test1
其中 test1 已在 MikeO 下创建
这只是重新创建整个子目录结构和 test1 中的所有文件
cp -R *.jpg /test1 results in:
cp: cannot stat ‘*.jpg’: No such file or directory
有人能给我指明正确的方向吗?
答案1
没有名为“的文件.jpg”。您需要将该文字视为:“.jpg” 不是“.JPG” 或 “.jPg” 或任何其他组合。Windows 在这方面有所不同:它会将它们视为相同。
在同一目录中执行ls
,它将显示该目录的内容。ls *jpg
列出以 结尾的所有文件*.jpg
。
请注意 -R 表示递归,但仅适用于复制目录。这并不意味着它会获取所有目录中以 结尾的文件*.jpg
。
如果你想找到所有以 *.jpg 结尾的文件并将它们复制到 /test1/,这样做可行:
find . -depth -name '*.jpg' -print | cpio -pmdv /test1/
~
如果 /test1/ 位于您的主目录中,则添加一个。
其中 test1 已在 MikeO 下创建
你这是什么意思?如果你指的是“MikeO”主目录:则从/
(/
即 root) 开始。如果你指的是/home/MikeO/test
/,则需要~
在 前面加上/test1
。
答案2
您可以使用rsync
而不是cp
命令来复制特定扩展文件。以下是仅复制 .jpg 扩展文件的命令。
rsync -pavr \
--include '+ */' --include '*.jpg' --exclude '- *' \
/path/to/source/directory /path/to/destination/directory