1

我使用一个程序来翻录广播音乐。可悲的是,不能将临时文件夹与完成的 mp3 稍后结束的文件夹分开。所以我无法将输出文件夹设置为自动添加到 iTunes。

我在编写java代码方面没问题,但没有使用shell脚本的经验。

我需要一个脚本,它像每 10 分钟一样遍历文件夹中的所有文件,如果它们不以字符串“Track”开头,则将它们移动到不同的位置。所有临时文件都称为“跟踪...”,因此它应该只移动完成的文件。有人可以帮我入门吗?谢谢!

4

2 回答 2

0

编辑 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

于 2012-10-07T12:29:10.990 回答
0

这是一个示例脚本。在取消注释移动文件的行之前,您应该正确设置 DESTINATION 目录。否则,您最终可能会将它们移动到不受欢迎的地方。

在终端中,cd 到您保存以下代码段的位置并运行以下命令来执行。

准备工作:

  • cd /保存/位置
  • chmod +x file_mover.sh # 使文件可执行

安排工作:

  • crontab -e
  • */10 * * * * /path/to/file_mover.sh
  • crontab -l # 查看计划任务列表

通过一些小的调整,您可以使其接受 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
于 2012-10-06T11:48:49.267 回答