パイピング中にファイル名から正規表現を削除します。

パイピング中にファイル名から正規表現を削除します。

bashファイルをiso-latin-1(別名iso-8859-1)からutf-8。そして、エラーが発生しやすいファイル名の形式を変更する機会があります。

そのファイルの名前は次のとおりです。

tree Dados/Jan/
Dados/Jan/
├── 201301_Licitacoes
│   ├── 201301_EmpenhosRelacionados.csv
│   ├── 201301_ItemLicitaЗ╞o.csv
│   ├── 201301_LicitaЗ╞o.csv
│   └── 201301_ParticipantesLicitaЗ╞o.csv
├── 201401_Licitacoes
│   ├── 201401_EmpenhosRelacionados.csv
│   ├── 201401_ItemLicitaЗ╞o.csv
│   ├── 201401_LicitaЗ╞o.csv
│   └── 201401_ParticipantesLicitaЗ╞o.csv
├── 201501_Licitacoes
│   ├── 201501_EmpenhosRelacionados.csv
│   ├── 201501_ItemLicitaЗ╞o.csv
│   ├── 201501_LicitaЗ╞o.csv
│   └── 201501_ParticipantesLicitaЗ╞o.csv
├── 201601_Licitacoes
│   ├── 201601_EmpenhosRelacionados.csv
│   ├── 201601_ItemLicitaЗ╞o.csv
│   ├── 201601_LicitaЗ╞o.csv
│   └── 201601_ParticipantesLicitaЗ╞o.csv

(...)

私は次のことをしています:

find Dados/Jan/ -maxdepth 2 -name '*.csv' -exec sh -c 'conv {}' \;

その中にはconv次のスクリプトがあります。

#!/usr/bin/env bash

## adapted from https://stackoverflow.com/questions/62918711/convert-multiple-csv-files-to-utf-8-encoding-using-a-script-windows-command-prom

for file in $@; do
    iconv -f ISO-8859-1 UTF-8 <"$file" >"$file".tmp &&
    mv "$file.tmp" "$file"
done

この過程で 'を削除したいと思います。З╞o「ファイルを解凍すると、ファイル名にテキストが表示されます(誰かがこれを使用した可能性があります)」~「ファイル名など)。

ベストアンサー1

mvファイルを最終ターゲットに転送するときは、シェル「パラメータ拡張」を使用してください。良い

mv "$file.tmp" "${file//З╞o}"

いつも同じ文字順ですか?

おすすめ記事