我正在尝试使用inotify-tools创建一个bash脚本,它将监视目录并通过删除包含"EE"的行来更改所有新文件.一旦改变,它将把文件移动到另一个目录
#!/bin/sh
while inotifywait -e create /home/inventory/initcsv; do
sed '/^\"EE/d' Filein > fileout #how to capture File name?
mv fileout /home/inventory/csvstorage
fi
done
Run Code Online (Sandbox Code Playgroud)
请帮忙?
Jam*_*at7 22
默认情况下,文本输出inotifywait -e CREATE
的形式
watched_filename CREATE event_filename
Run Code Online (Sandbox Code Playgroud)
where watched_filename
表示/home/inventory/initcsv
并event_filename
表示新文件的名称.
所以,代替你的while inotifywait -e ...
线,放:
DIR=/home/inventory/initcsv
while RES=$(inotifywait -e create $DIR); do
F=${RES#?*CREATE }
Run Code Online (Sandbox Code Playgroud)
并在您的sed
行中使用$F
作为Filein
名称.注意,$(...)
构造是与posix兼容的进程替换形式(通常使用反引号完成),${RES#pattern}
结果等于$RES
删除最短的模式匹配前缀.注意,模式的最后一个字符是空白. [见更新2]
更新1要处理可能包含空格的文件名,请在sed行中使用"$F"
而不是$F
.也就是说,在引用值的周围使用双引号F
.
在RES=...
和F=...
定义并不需要使用双引号,但它是确定如果你喜欢使用它们; 例如: 当处理包含空格的文件名时F=${RES#?*CREATE }
,F="${RES#?*CREATE }"
两者都可以正常工作.
更新2如Daan的评论中所述,inotifywait
有一个--format
控制其输出形式的参数.用命令
while RES=$(inotifywait -e create $DIR --format %f .)
do echo RES is $RES at `date`; done
Run Code Online (Sandbox Code Playgroud)
在一个终端和命令中运行
touch a aa; sleep 1; touch aaa;sleep 1; touch aaaa
Run Code Online (Sandbox Code Playgroud)
在另一个终端运行,第一个终端出现以下输出:
Setting up watches.
Watches established.
RES is a at Tue Dec 31 11:37:20 MST 2013
Setting up watches.
Watches established.
RES is aaa at Tue Dec 31 11:37:21 MST 2013
Setting up watches.
Watches established.
RES is aaaa at Tue Dec 31 11:37:22 MST 2013
Setting up watches.
Watches established.
Run Code Online (Sandbox Code Playgroud)
Jon*_*ler 11
输出inotifywait
的形式如下:
filename eventlist [eventfilename]
Run Code Online (Sandbox Code Playgroud)
如果您的文件名可以包含空格和逗号,则解析起来很棘手.如果它只包含'理智'文件名,那么你可以这样做:
srcdir=/home/inventory/initcsv
tgtdir=/home/inventory/csvstorage
inotifywait -m -e create "$directory" |
while read filename eventlist eventfile
do
sed '/^"EE/d'/' "$srcdir/$eventfile" > "$tgtdir/$eventfile" &&
rm -f "$srcdir/$eventfile
done
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
29696 次 |
最近记录: |