如何列出最新的目录,并添加为变量bash脚本来处理文件递归如何列出最新的目录,并添加为变量bash脚本处理递归文件
ls -t1 | head -n1
完美的作品,列出最新目录,但我想该目录名称添加到我的剧本,所以我可以在使用下面的脚本处理的文件:
#!/bin/bash
ls | while read -r FILE
do
mv -v "$FILE" `echo $FILE | tr ' ' '_' `
done
ls | while read -r FILE
do
mv -v "$FILE" `echo $FILE | tr '\*.JPEG' '\*.jpg' `
done
mogrify -resize 750 *.jpg
wait
jpegoptim *.jpg –max=70 --strip-all
exit
我也想递归处理的文件,有可能是在子的最上一层目录。
基本上将bash脚本保存在目录的根目录下,并处理所有最新的目录和子目录文件。
OK我修改剧本,以这样的:
#!/bin/bash
DIR=ls -t1 | head -n1
ls $DIR | while read -r FILE
do
mv -v "$FILE" `echo $FILE | tr ' ' '_' `
done
ls $DIR | while read -r FILE
do
mv -v "$FILE" `echo $FILE | tr '\*.JPEG' '\*.jpg' `
done
mogrify -resize 750 $DIR/*.jpg
wait
jpegoptim $DIR/*.jpg –max=70 --strip-all
exit
但它似乎并没有认识到$ DIR变量。
不应该'DIR = LS-T1 | head -n1'被替换为'DIR = $(ls -t1 | head -n1)'? – sgibb 2012-03-15 17:06:30
@sgibb尝试过,但得到相同的结果=没有结果 – Grant 2012-03-15 19:50:34
做你的操作'ls -t1 | head -n1'(没有涉及DIR的任何事情),产生你期望的结果?我不习惯'head -n1'的语法,是不是吹了它?祝你好运。 – shellter 2012-03-15 20:53:50