我有一个包含大量子文件夹的文件夹。在一些子文件夹中,我有一个folder.jpg图片。我尝试做的是找到该文件夹并将其复制到所有其他具有相同艺术家和专辑信息的子文件夹,然后继续下一个专辑等。
所有文件夹的结构都是“artist - year - album - [encoding information]
”。
我已经制作了一个非常简单的单行内容,找到了获取文件的文件夹但是我卡住了。
ls -F | grep / | while read folders;do find "$folders" -name folder.jpg; done
任何人都有任何好的提示或想法如何解决这个或指示如何进行?
编辑:
首先,我是新手(就像你不能告诉的那样)所以请耐心等待。
好的,让我分解一下。
我有一个如下所示的文件夹结构:
artist1 - year - album - [flac]
artist1 - year - album - [mp3]
artist1 - year - album - [AAC]
artist2 - year - album - [flac]
etc
我喜欢遍历具有相同艺术家和专辑信息的文件夹集,并查找folder.jpg
文件。当我找到该文件时,我是否喜欢将其复制到同一组中的所有其他文件夹中。
如果我在folder.jpg
文件夹中找到一个artist1 - year - album - [flac]
,我希望将folder.jpg
复制到artist1 - year - album - [mp3]
&
artist1 - year - album - [AAC]
但不是艺术家2年 - 专辑 - [flac]。
继续循环,直到处理完所有集合。我真的希望能让我更容易理解我的尝试:)
答案 0 :(得分:1)
IFS='
'
FLDRS=`find . -name folder.jpg | grep -v ./folder.jpg | sed -e 's@/folder\.jpg$@@`
for F in $FLDRS; do
NOENC=`echo "$F" | sed -e 's/\[.*$//'`
for DST in "$NOENC*"; do
if [ -d "$DST" -a ! -f "$DST/folder.jpg" ]; then
cp "$F/folder.jpg" "$DST"
fi
done
done
对于包含所有encondings中的folder.jpg的集合来说效率很低,但除非出现错误,否则它应该完成工作。
答案 1 :(得分:1)
我知道它不是最有效或最正确的代码,但这对我来说很合适,我在正确的文件夹中找到了正确的folder.jpg。
IFS='
'
source=( `find . -name folder.jpg | sed 's/^..//' | sort -u` )
for s in ${source[@]}
do
fullname=(`echo $s | cut -d'/' -f1 | sort -u`)
checkname=`echo $fullname | cut -d'[' -f1 | sort -u`
match=( `find . -name "$checkname*" | sed 's/^..//' | sort -u` )
for a in ${match[@]}
do
if [[ "$a" == "$fullname" ]];
then
echo $a 'not copied'
else
echo $a
#echo $match '*M*'
cp $s "$a/folder.jpg"
fi
done
done