私はこのロジックを適用しようとしており、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
and とfind
一緒に使用できます(システムにパッケージがインストールされている場合)。xargs
rename
util-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」を削除できます。