如何用Bash获取目录中子目录名并执行对应的curl命令
解决方案
方法一:遍历专辑目录(适配固定结构)
直接遍历/mnt/ripped_audio下的专辑目录,拼接出music_tracks路径后执行curl命令:
#!/bin/bash # 定义CD抓取的根目录 RIPPED_ROOT="/mnt/ripped_audio" # 遍历根目录下的所有专辑子目录 for album_dir in "$RIPPED_ROOT"/*/; do # 拼接该专辑对应的music_tracks完整路径 tracks_path="${album_dir}music_tracks" # 验证路径是否为有效目录 if [ -d "$tracks_path" ]; then # 替换为你的音乐客户端实际需要的curl命令 curl -X POST "音乐客户端API地址" -F "import_path=$tracks_path" # 可选:输出日志记录 echo "$(date) 已提交导入:$tracks_path" >> ~/music_import.log fi done
方法二:用find命令直接定位music_tracks目录
如果专辑目录结构有变动,或需要批量扫描所有music_tracks目录,用find命令更灵活:
#!/bin/bash # 查找所有music_tracks目录并遍历 find /mnt/ripped_audio -type d -name "music_tracks" | while read tracks_path; do # 执行导入的curl命令 curl -X POST "音乐客户端API地址" -F "import_path=$tracks_path" # 可选:日志记录 echo "$(date) 已提交导入:$tracks_path" >> ~/music_import.log done
使用说明
- 替换脚本中的
音乐客户端API地址为实际接口地址,调整curl的请求方法、表单字段等参数以匹配客户端要求。 - 给脚本添加执行权限:
chmod +x import_music.sh - 如需自动定期执行,可添加cron定时任务(示例:每天凌晨1点执行):
0 1 * * * /home/your_user/import_music.sh >> /var/log/music_import_cron.log 2>&1
内容的提问来源于stack exchange,提问作者user22672526
相关产品推荐
相关产品推荐

