2017-10-19 18 views
1

このコマンドが機能しない理由は何ですか? btw、私は現在のディレクトリ内のすべてのcsvファイルの拡張子を取り除こうとしています。ファイル名からexecとstrip拡張子を見つける

find -type f -iname "*.csv" -exec mv {} $(basename {} ".csv") \; 

パラメータ拡張、xargsを含む多くの変種を試してみました...それでもすべて無駄でした。

+0

回答はありましたか?もしそれが受け入れられて投票が完了できるように感じたら、 – Inian

+0

この回答はあなたのために働いたのですか?下の私の答えにフィードバックを残すか – Inian

答えて

0

まず、サブディレクトリがないことに注意してください。 findは、余分な引数なしで、自動的に以下のディレクトリに再帰します。

シンプルなアプローチ:あなたは十分に小さいファイルの数、ちょうどグロブを使う(*)演算子、およびrenameを利用している場合:

$ rename 's/.csv$//' *.csv 

をあなたはあまりにも多くのファイルがある場合、findを使用し、おそらくxargs

$ find . -maxdepth 1 -type f -name "*.csv" | xargs rename 's/.csv$//' 

あなたが本当に安全にしたい場合は、そうトン、ヌル・バイトを区切るためにfindxargsを伝えますあなたが奇妙なファイル名(空白や改行など)を持っていない場合:

関連する問題