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

0 unix sysadmin shell

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

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

我需要帮助

jed*_*erg 8

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

pwd|awk -F'/' '{print $NF}'
Run Code Online (Sandbox Code Playgroud)

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

pwd|awk -F'/' '{SL = NF-1; print $SL}'
Run Code Online (Sandbox Code Playgroud)

更新

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

#!/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
Run Code Online (Sandbox Code Playgroud)

然后做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
Run Code Online (Sandbox Code Playgroud)

并做到了这一点:

./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
Run Code Online (Sandbox Code Playgroud)

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