Tôi đang cố gắng tìm các tệp JPG trong cây thư mục để thực thi lệnh "" để chuyển đổi nó thành PDF.
Vấn đề là mã tôi đang chạy để lại tệp trong cùng thư mục và tôi muốn di chuyển nó nhưng bảo toàn cấu trúc của cây tệp.
Những gì tôi đã thử cho đến nay là:
find . -iname '*.jpg' -exec mogrify -format pdf '{}' \;
Lệnh này hoạt động hoàn hảo. Tôi muốn thao tác "{}" chuyển một phần nội dung của nó;
{} = ./1/aa.xxx
và tôi muốn chuyển đổi nó thành:
{} = ./new/1/aa.pdf
nhờ @ mpez0 tôi có thể thay đổi một giải pháp:
find . -iname '*.jpg' | while read file ; do
oldfile=${file##*/};
olddir=${file/"$oldfile"/""};
pdfdir=${file/'./''./PDF'};
pdfdir=${pdfdir/"$oldfile"/""};
savedir=${file/'./''./OLD'};
savedir=${savedir/"$oldfile"/""};
newfile=${oldfile/.[Jj][Pp][Gg]/.pdf};
mogrify -format pdf "$file";
mkdir -p "$pdfdir";
mkdir -p "$savedir";
mv -- "$olddir$newfile" "$pdfdir$newfile";
mv -- "$olddir$oldfile" "$savedir$oldfile";
done
Mã này làm gì:
find . -iname '*.jpg'
tìm tất cả các tệp kết thúc whit jpg và JPG
while read file ; do
nếu hành động lấy tệp ani lưu thường trình trong biến file
oldfile=${file##*/};
lấy ra tệp pat và lưu tên te của tệp trong biến oldfile
olddir=${file/"$oldfile"/""};
lấy tên tệp để lưu pat olddir
pdfdir=${file/'./''./PDF'};
thay đổi ./ thành ./pdf và lưu pat mới trong việc pdfdir
pdfdir=${pdfdir/"$oldfile"/""};
lấy tên của tệp để lưu tệp pat pat pdfdir
savedir=${file/'./''./OLD'};
thay đổi ./ thành ./old và lưu pat mới savedir
savedir=${savedir/"$oldfile"/""};
lấy ra tên của tệp để lưu tệp pat pat trong savedir
newfile=${oldfile/.[Jj][Pp][Gg]/.pdf};
lưu tên tệp mới sẽ được tạo để newfile
mogrify -format pdf "$file";
chuyển đổi file
sang pdf
mkdir -p "$pdfdir";
tạo các thư mục của pat pdfdir
mkdir -p "$savedir";
tạo các thư mục của pat savedir
mv -- "$olddir$newfile" "$pdfdir$newfile";
di chuyển tệp pdf mới tạo vào tệp giám đốc pdf
mv -- "$olddir$oldfile" "$savedir$oldfile";
di chuyển tệp jpg cũ sang giám đốc cũ
done
kết thúc các thủ tục
Tôi hy vọng điều này sẽ giúp những người khác