从我的终端复制...
dan@Silver:/media/dan/RAID/MUSIC$ grep -r '.mp3' ./ > cp *.mp3 /home/dan/Music/
grep: input file ‘./cp’ is also the output
我在 NTFS 卷上有一个音乐收藏,我想整理一下,然后将其传输到新的 Ubuntu 设置中。上面的命令旨在搜索 6 或 7 个目录(“cp -r”不会),并且仅复制以 .mp3 结尾的文件。
我不知道 grep 在说什么。有可以为新手提供帮助吗?
答案1
适合此作业的命令行工具是find
例如
find -iname '*.mp3' -type f -execdir cp -t /home/dan/Music/ -- {} +
测试-iname
将不区分大小写地匹配,即.MP3
以及.mp3
- 我不确定这在 NTFS 文件系统上是否重要。您可以改用-name
。
答案2
我不确定你所说的排序是什么意思,除非你想改变目录布局,但这就是它不起作用的原因......
部分问题在于,通过使用 '>',您将 grep 命令的输出重定向到名为 'cp' 的文件,而不是使用管道 '|' 到 'cp' 命令。
然而更大的问题是你的 grep 命令可能永远不会返回(或者可能什么都不返回),因为你正在使用grep -r '.mp3' ./
而不是grep '.mp3' -r ./
另外,我想 grep 可能正在寻找 .mp3内容文件而不是文件名。
尝试:
cd /media/dan/RAID/MUSIC
find . -name '*.mp3'
如果其中列出了您想要复制的所有文件,请尝试:
find . -name '*.mp3' -exec cp --parents "{}" /home/dan/Music \;
--exec
为每个 find 匹配的文件运行一个命令,保留--parents
文件的完整路径(否则所有文件都会复制到 /home/dan/Music 而不是 /home/dan/Music/subdir1 等),{}
指的是当前匹配的文件。我把它放在引号里,因为音频文件里通常有空格。这\;
是终止命令的方式--exec
希望这能帮到你。即使没有用,我也强烈建议你查看 find 和可能的 xargs 的手册页,这是一个强大的组合,你可以将 find 的输出通过管道传输到 xargs
答案3
查找自定义 bash 函数包:
https://github.com/Kiran-Bose/supreme
下载并安装基于 debian 的系统的 deb 文件。
功能概述
(1)打开应用程序----Firefox----计算器----设置
(2)管理文件 ----搜索 ----导航 ----快速访问
|----Select File(s)
|----Inverse Selection
|----Make directory
|----Make file
|----Open
|----Copy
|----Move
|----Delete
|----Rename
|----Send to Device
|----Properties
(3)管理手机 ----从手机移动/复制 ----移动/复制到手机 ----同步文件夹
(4)管理USB ----从USB 移动/复制 ----移动/复制到USB