我使用一个程序来翻录广播音乐。可悲的是,不能将临时文件夹与完成的 mp3 稍后结束的文件夹分开。所以我无法将输出文件夹设置为自动添加到 iTunes。
我在编写java代码方面没问题,但没有使用shell脚本的经验。
我需要一个脚本,它像每 10 分钟一样遍历文件夹中的所有文件,如果它们不以字符串“Track”开头,则将它们移动到不同的位置。所有临时文件都称为“跟踪...”,因此它应该只移动完成的文件。有人可以帮我入门吗?谢谢!
编辑 crontabEDITOR=nano crontab -e
并添加如下一行:
*/10 * * * * shopt -s extglob; mv ~/Music/Temp/!(Track)*.mp3 ~/Music/iTunes/iTunes\ Media/Automatically\ Add\ to\ iTunes.localized/
shopt -s extglob
添加对!()
. 见/usr/share/doc/bash/bash.html
。
这是一个示例脚本。在取消注释移动文件的行之前,您应该正确设置 DESTINATION 目录。否则,您最终可能会将它们移动到不受欢迎的地方。
在终端中,cd 到您保存以下代码段的位置并运行以下命令来执行。
准备工作:
安排工作:
通过一些小的调整,您可以使其接受 CLI 选项。
#!/bin/bash
# files to skip
REGEX='^TRACK'
# location to move the files
DESTINATION=/tmp/mydir
# directory to read from
# PWD is the working directory
TARGET=${PWD}
# make the directory(ies) if it doesn't exists
if [ ! -f ${DESTINATION} ]; then
mkdir -p ${DESTINATION}
fi
# get the collection of files in the
for FILE in $( ls ${TARGET} )
do
# if the current file does not begin with TRACK, move it
if [[ ! ${FILE} =~ ${REGEX} ]]; then
echo ${FILE}
# SET THE DESTINATION DIRECTORY BEFORE UNCOMMENTING THE LINE BELOW
# if [ -f ${FILE} ]; then # uncomment if you want to
# ensure it's a file and not a directory
# mv ${FILE} ${DESTINATION} # move the file
# fi # uncomment to ensure it's a file (end if)
fi
done