У меня есть несколько музыкальных файлов в отдельных папках по имени исполнителя, которые я хочу скопировать в одно место, чтобы rhythmbox мог импортировать все файлы из одного места. Я видел простые программные решения для этого, но ни одного для Ubuntu. Есть предложения?
Чтобы переместить файлы, сделайте это:
find /my/files/path -iname "*.mp3" -exec mv {} /home/user/music \;
Это работает так: первый / my / files / path - это место, куда вы хотите посмотреть , Часть, которая говорит / home / user / music , - это место, куда вы хотите переместить все файлы. Итак, позвольте нам сказать, что у вас есть вся музыка в вашей домашней папке в /home/jon/music
и вы хотите переместить ее в home/jon/newmusic
, а затем сделайте следующее:
find /home/jon/music -iname "*.mp3" -exec mv {} /home/jon/newmusic \;
Если она в одной и той же папке проезжайте пункт назначения и пункт назначения, тогда он сделает это очень быстро. Если он находится на другом жестком диске, например /media/jon/backup/music
, то это будет зависеть от скорости жесткого диска.
Если вы предпочитаете копировать, а не перемещать файлы, вы должны использовать cp:
find /home/jon/music -iname "*.mp3" -exec cp {} /home/jon/newmusic \;
Взял отсюда: http://ubuntuforums.org/showthread.php?t=1385966
НЕ СЛУЧАЙНО ДЕЛАЙТЕ ЭТО В ВАШЕЙ ДОМАШНЕЙ ПАПКЕ.
Перейдите в верхний каталог, содержащий все эти файлы, и выполните
find ./ -type f -exec cp '{}' ./ \;
В соответствии с man-страницей для поиска вам может понадобиться экранировать {}.
Или, если вы предпочитаете сценарии:
#!/bin/bash
# to get description use the -h flag
# ==========
# preambula:
PROGNAME=${0##*/}
PROGVERSION=1.0
Name="*"
destDir=`basename ${0##*/} .bash`
# colors:
BLUE='\033[94m'
GREEN="\e[0;32m"
RED='\033[91m'
BLACK='\033[0m'
usage()
{
cat << EO
Usage: $PROGNAME <folder>
Copies files matching rgxp (default to all files) from the current dir
and its child dirs to the specified dir (default to $destDir).
I recomment back-up files before running this script.
Options:
EO
cat <<EO | column -s\& -t
-d, --dest & destination dir (default to $destDir)
-n, --name & files-of-interest shell-style rgxp (default to $Name)
-h, --help & show this output
-v, --version & show version information
--nocolors & disable colors in output. In case Your terminal doesn't support coloring and You get the output like \"\\033[94mthis\" or Your terminal colors \"conflict\" with the output coloring"
EO
}
SHORTOPTS="hvn:d:"
LONGOPTS="help,version,nocolors,name:dest:"
ARGS=$(getopt -s bash --options $SHORTOPTS --longoptions $LONGOPTS --name $PROGNAME -- "$@")
eval set -- "$ARGS"
while true; do
case $1 in
-n|--name)
Name=$2; shift;;
-d|--dest)
destDir=$2; shift;;
-h|--help)
usage; exit 0;;
-v|--version)
echo "$PROGVERSION"; exit 0;;
--nocolors)
noColors=true;;
--)
shift; break;;
*)
shift; break;;
esac
shift
done
# ===================
# finally the script:
# making a dir:
if [ -d "$destDir" ]; then
rm -rf "$destDir"
fi
mkdir "$destDir"
# copying!
numberOfFiles=0
find . -type f -name "$Name" | {
while read fl; do
echo -e "${RED}${PROGNAME}: ${GREEN}Copying \"$fl\" ..\c${BLACK}"
cp "$fl" "$destDir/`basename "$fl"`"
if [[ $? -eq 0 ]]; then
echo " OK"
numberOfFiles=`expr $numberOfFiles + 1`
fi
done
echo -e "${RED}${PROGNAME}: ${GREEN}$numberOfFiles files got copied to \"$destDir\"${BLACK}"
}
# ===========
## reporting:
echo -e "${RED}${PROGNAME}: ${GREEN}Done.${BLACK}"