【シェル】マルチレベルディレクトリのファイルを取得し、名前を変更します

仮定/ホーム/ / data /ディレクトリマルチレベルのサブディレクトリの下に含まれており、空のディレクトリが存在しない、ファイルの名前を変更することにより、スクリプト、ディレクトリレベル、それはファイル名の一部となり、ディレクトリの異なるレベル_間隔は(同じ名前を無視問題)。
    以下のような:変更:
        /home/a/data/aaa/a.txt /home/a/data/aaa_a.txt
        /home/a/data/aaa/b.txt /home/a/data/aaa_b.txt
        /ホーム/ A /データ/ AAA / CCC / C.txt /home/a/data/aaa_ccc_c.txt
        /home/a/data/bbb/bb.txt /home/a/data/bbb_bb.txt
        /ホーム/ A /データ/ bbb.txt /home/a/data/bbb.txt

回答:

#!/bin/bash

for e in `find /home/a/data`
do
  mv -f $e /home/a/data/`echo ${e#/home/a/data/}|sed 's/\//_/g'`
done

 

おすすめ

転載: blog.csdn.net/zkq_1986/article/details/92078749