当前位置: 技术问答>linux和unix
求一个实现如下操作的shell命令的写法
来源: 互联网 发布时间:2016-07-23
本文导语: 找到如下目录下,包括子目录的所有*.sqlite文件 ~/Library/Application Support/Firefox/Profiles 并针对每个文件执行 sqlite3 $f 'VACUUM;' 我写的一个是这样的: for f in ~/Library/Application Support/Firefox/Profiles/某随机生成的文件夹名...
找到如下目录下,包括子目录的所有*.sqlite文件
~/Library/Application Support/Firefox/Profiles
并针对每个文件执行
sqlite3 $f 'VACUUM;'
我写的一个是这样的:
for f in ~/Library/Application Support/Firefox/Profiles/某随机生成的文件夹名/*.sqlite; do sqlite3 $f 'VACUUM;'; done
问题有两个:
Application Support这个文件夹名字有个空格,shell会出错,转义了都不行
Profiles文件夹下文件夹都是随机生成的,我无法事先知道它的名字
~/Library/Application Support/Firefox/Profiles
并针对每个文件执行
sqlite3 $f 'VACUUM;'
我写的一个是这样的:
for f in ~/Library/Application Support/Firefox/Profiles/某随机生成的文件夹名/*.sqlite; do sqlite3 $f 'VACUUM;'; done
问题有两个:
Application Support这个文件夹名字有个空格,shell会出错,转义了都不行
Profiles文件夹下文件夹都是随机生成的,我无法事先知道它的名字
|
find '~/Library/Application Support/Firefox/Profiles' -name '*.sqlite' -exec sqlite3 {} 'VACUUM;' ;
路径用''扩起来
路径用''扩起来
|
find ~/Library/Application Support/Firefox/Profiles -name '*.sqlite' -exec sqlite3 $f 'VACUUM;' {} ;
|
1.有空格的目录用引号包含起来就认识了"Application Support"
2.
for DIR in `find ~/Library/Application Support/Firefox/Profiles/ -maxdepth 1 -mindepth 1 -type d`
do
for f in $DIR/*.dqlite
do
sqlite3 $f 'VACUUM;'
done
done
2.
for DIR in `find ~/Library/Application Support/Firefox/Profiles/ -maxdepth 1 -mindepth 1 -type d`
do
for f in $DIR/*.dqlite
do
sqlite3 $f 'VACUUM;'
done
done