Lur*_*Dog 2 command-line bash scripts
我正在尝试制作一个 bash 脚本,它将在我的下载文件夹中找到所有 mp3 并将它们移动到音乐文件夹中。为什么这条线不行?
find ./ -type f -name \*.mp3 | mv *.mp3 /home/mitch/Desktop/Music/$ARTIST
Run Code Online (Sandbox Code Playgroud)
我尝试使用管道将第一个命令中的信息转换为第二个命令,但我以前从未使用过管道,不知道是我做错了还是我对它们的用途有错误的想法为了。
该mv命令不使用其标准输入,因此您必须将标准输入转换为参数,为此可以使用xargs:
find ./ -type f -name '*.mp3' | xargs mv -t /home/mitch/Desktop/Music/$ARTIST
Run Code Online (Sandbox Code Playgroud)
此外,您可以直接使用以下-exec操作find:
find ./ -type f -name '*.mp3' -exec mv {} /home/mitch/Desktop/Music/$ARTIST ';'
Run Code Online (Sandbox Code Playgroud)
编辑
正如@geirha 所指出的,如果您的文件名包含空格,则第一个命令将不起作用。在这种情况下,它应该如下
find ./ -type f -name '*.mp3' -print0 | xargs -0 mv -t /home/mitch/Desktop/Music/$ARTIST
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1805 次 |
| 最近记录: |