将父文件夹和子文件夹的名称附加到多个文件的名称

时间:2009-03-13 15:55:02

标签: unix shell sysadmin

我有文件夹和子文件夹,里面有10K张照片。

现在我需要将所有10K文件放入一个文件夹中。我想用现有的文件名附加文件夹和子文件夹名称,以便文件名对我有意义。

我需要帮助

1 个答案:

答案 0 :(得分:7)

您可以编写一个快速shell脚本来为您执行此操作。获取当前文件夹的名称:

pwd|awk -F'/' '{print $NF}'

并获取当前文件夹的父级:

pwd|awk -F'/' '{SL = NF-1; print $SL}'

<强>更新

创建一个如下所示的文件:

#!/bin/bash

for f in `find . -name '*jpg'`
do
   filename=`echo $f|awk -F'/' '{SL = NF-1; TL = NF-2; print $TL "_" $SL  "_" $NF}'`
   cp $f newfolder/$filename
done

然后对其进行chmod +x。在顶级运行脚本。在这种情况下,您需要提前创建目标,新文件夹。

我采用了这个目录结构:

./bar
./bar/baz
./bar/baz/1.jpg
./bar/baz/2.jpg
./bar/baz/3.jpg
./bar/buz
./bar/buz/1.jpg
./bar/buz/2.jpg
./bar/buz/3.jpg
./foo
./foo/baz
./foo/baz/1.jpg
./foo/baz/2.jpg
./foo/baz/3.jpg
./foo/buz
./foo/buz/1.jpg
./foo/buz/2.jpg
./foo/buz/3.jpg

进入这个:

./newfolder/bar_baz_1.jpg
./newfolder/bar_baz_2.jpg
./newfolder/bar_baz_3.jpg
./newfolder/bar_buz_1.jpg
./newfolder/bar_buz_2.jpg
./newfolder/bar_buz_3.jpg
./newfolder/foo_baz_1.jpg
./newfolder/foo_baz_2.jpg
./newfolder/foo_baz_3.jpg
./newfolder/foo_buz_1.jpg
./newfolder/foo_buz_2.jpg
./newfolder/foo_buz_3.jpg

希望这就是你要找的东西。