0
点赞
收藏
分享

微信扫一扫

LINUX SHELL如何递归访问目录(处理包含空格的文件名)


  搜索了很多,都感觉太复杂。最后找到了一个简单办法。

  其中特别要注意两点:


  1. 文件名包含空格的列出处理。
  2. 使用包含空格的参数。

#!/bin/bash

function processFile()
{
# 如果字串中有/,需要使用别的分隔符。DEST_TEXT中假设相同特性。
if [[ "${SOURCE_TEXT}" == "*/*" ]]; then
sed -i "s:${SOURCE_TEXT}:${DEST_TEXT}:g" "$1"
else
sed -i "s/${SOURCE_TEXT}/${DEST_TEXT}/g" "$1"
fi
}

function processDir()
{
cd "$1"
# space to ?
files=`ls | tr " " "\?"`

for item in ${files}
do
if [ -d "${item}" ]; then
processDir "${item}"
else
processFile "${item}"
fi
done

cd ..
}

SOURCE_TEXT=avcodec_alloc_frame
DEST_TEXT=av_frame_alloc
PROCESS_DIR=doubango/doubango/schemas

processDir ${PROCESS_DIR}



举报

相关推荐

0 条评论