我列出了近500个pdf文件,文件结构如下:
XXXX-YYYY-MM-DD.pdf
其中XXXX
是一个变量长度数字代码( 1到4位),总是由" - "分隔,例如:
51-2016-08-22.pdf
776-2016-08-22.pdf
3881-2016-08-22.pdf
4-2016-08-22.pdf
2860-2016-08-22.pdf
目标是将每个文件复制到自己的目录中,命名模式之类的目录(即:文件776-2016-08-22.pdf转到目录776)。如何使用awk或sed来分隔变量长度字段?
这是我的代码:
for f in *.pdf
do
FOLDERNAME=`echo $f| awk (awk or sed missing code here)`
mkdir /my/dir/structure/$FOLDERNAME
cp $f /my/dir/structure/$FOLDERNAME/
done
感谢您的支持。
答案 0 :(得分:5)
您可以使用:
for f in *.pdf; do
d="${f%%-*}"
mkdir -p "$d" && cp "$f" "$d"
done
答案 1 :(得分:1)
正如ed-morton正确指出的那样,这是 NOT 推荐的解决方案,因为它在许多情况下都失败了。请关注https://stackoverflow.com/a/39089589/3834860
保留此答案供参考。
awk -F '-'
为分隔符之前的第一个元素指定分隔符和'{print $1}'
。
for f in *.pdf
do
FOLDERNAME=`echo $f| awk -F '-' '{print $1}'`
mkdir /my/dir/structure/$FOLDERNAME
cp $f /my/dir/structure/$FOLDERNAME/
done