0

私はこのロジックを適用しようとしており、sedを使用して置き換えて名前を変更しています

ヒントをください

#!/bin/bash

find /home/san -type f -name "*'*" > /tmp/output | while read file
do
      rename all files by deleting single quote from the name 

done
4

1 に答える 1

3

and とfind一緒に使用できます(システムにパッケージがインストールされている場合)。xargsrenameutil-linux

find /home/san -type f -name "*'*" -print0 | xargs -0 -L1 rename "'" ""

指定された「sed」を使用すると、コマンド置換を使用できます。

find "/home/san" -type f -name "*'*" | while IFS= read -r file
do
  # we need to avoid replacing characters in the path to the file,
  # so split it into dirname and filename.
  DIRNAME=$(dirname "$file")
  FILENAME=$(basename "$file")
  NEWNAME=$(sed "s/'//g" <<< "$FILENAME")
  mv -v --no-clobber "$file" "$DIRNAME/$NEWNAME" || echo "$DIRNAME/$NEWNAME already exists, not overwriting."
done

--no-clobber同名のファイルが存在する場合、上書きされないようにします。「-v」は何が行われているかを表示するだけです。表示する必要がない場合は「-v」を削除できます。

于 2013-06-02T11:41:01.923 に答える