是否可以使用命令行来使用类似cp
或rsync
命令来抓取硬盘以仅查找图像/视频文件?也许在将它们复制到另一个位置的过程中,在新位置保留文件夹名称/路径?
我有几个旧硬盘,我想备份其中的图片和视频,但它们分散在数千个文件夹中,如果可能的话,我更希望计算机为我完成大部分繁重的工作,但我仍在学习命令行及其令人印象深刻的功能。
答案1
您可以使用find
来查找您感兴趣的文件,即:
find /mnt/hd1 -name \*.jpg
将在 /mnt/hd1 目录中查找 jpg 文件(即带有 .jpg 扩展名的文件)。如果您只想将这些文件复制到某个地方,您可以:
find /mnt/hd1 -name \*.jpg -exec cp {} /mnt/dest
这将对cp
在 /mnt/dest 目录中找到的每个文件运行命令。
希望能帮助到你 :)
答案2
另一种可能性是,如果您不想将其自动化为一个脚本,则使用 find 命令创建一个 bash 脚本。然后运行 bash 脚本。这样您还可以知道文件的来源。
另外,如果您怀疑您的环境中存在重复的文件名,我会稍微修改上述内容。您需要在脚本中进行一些错误检查。
您是否还想保留目录路径?
即如果文件在这里
/来源/a/b/c/d/e.jpg
您想将其复制到
/目标/a/b/c/d/e.jpg?
或者
/目标/e.jpg?
举个例子
find /source -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/}' > copy.sh
这将仅复制到一个目录 /backup
为了保存,你可以这样做
(cd /source; find . -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/"$1}') > copy.sh
但你需要先创建所有目录
(cd /source; find . -type d -print | awk '{print "mkdir -p /backup/"$1}' > mkdir.sh
这样做的好处是,您还可以在实际运行命令之前查看脚本并确保一切正常。我已经多次运行该命令,但结果却出乎意料:)
另外,脚本还可以记录你将要做的事情。