5

したがって、次のようなファイルがたくさんあります。

 Aaron Lewis - Country Boy.cdg
 Aaron Lewis - Country Boy.mp3
 Adele - Rolling In The Deep.cdg
 Adele - Rolling In The Deep.mp3
 Adele - Set Fire To The Rain.cdg
 Adele - Set Fire To The Rain.mp3
 Band Perry - Better Dig Two.cdg
 Band Perry - Better Dig Two.mp3
 Band Perry - Pioneer.cdg
 Band Perry - Pioneer.mp3

また、bash または fish スクリプトで先頭の空白を削除する必要があります。

4

4 に答える 4

5

指定したファイル名の先頭の空白文字を削除するには、次を使用できます。

 IFS=$'\n'
 for f in $(find . -type f -name ' *')
 do 
     mv $f ${f/\.\/ /\.\/}
 done

これ:

  • IFS を改行文字のみに変更します。このようにして、ファイル名の空白で詰まることはありません。
  • 現在のディレクトリ内の空白で始まるすべてのファイルを検索します。
  • bash部分文字列置換を使用して、先頭の空白を除いたファイル名に各ファイルを移動します。
于 2013-05-29T23:22:29.093 に答える
0

これは必要ありませんsedbash文字列関数を使用するだけです:

for file in /path/to/files/*; 
    do mv "$file" "${file# *}"; 
done
于 2013-05-29T23:13:42.030 に答える
0
for x in \ * ; do
  mv "$x" `echo "$x" | sed "s/^ +//"`
done

これは速くて汚いです。

于 2013-05-29T23:07:04.343 に答える
0

cat <file> | sed -e 's/^[ ]*//'

トリックを行う必要があります。stdout をキャプチャしてファイルに書き込みます。

于 2013-05-29T23:09:52.360 に答える