2016-10-14 1 views
0

この投稿を参考にして、recursively add file extension to all filesを参照して、複数のサブフォルダ内の多くのファイルに再帰的に拡張機能を追加しようとしています。サブフォルダの最後に表示されるファイルには、拡張子がまったくありません。すべての拡張子を.htmlにしたいと思います。すべてのファイルにファイル拡張子を再帰的に追加しようとするとエラーが発生する

私が使用したい親ディレクトリに変更するためにCDを使用した後、私のコマンドプロンプトで次のように試してみました

:「FIND::無効なスイッチ」しかし、私は次のエラーが表示さ

find /path -type f -not -name "*.*" -exec mv "{}" "{}".html \; 

私はこのタイプの操作にコマンドプロンプトを使用するのが初めてであるので、私の無知を許してください。おそらく、/ pathを見たいディレクトリに変更する必要があるかもしれないと思っていますが、無駄にしようとしました。

find . -type f -exec mv '{}' '{}'.html \; 

と、次のエラーが表示されます:FIND:

私は、Windows 10を

+0

'-not' POSIX、どのように使用して' 'について – Jahid

+0

cygwinのあなたを使用しているされていませんか!? – Jahid

+0

Windowsのプロンプトではなく、UNIXのbashプロンプトでこれを実行してください。 – Jahid

答えて

0

謝罪を

0

-notがされて実行している正しくないパラメータ形式を

は、私はまた、次のコマンドを試してみました古典的な形式の論理否定。現在のフォームは です!(感嘆符)。これにはブール式が続く必要があります。この場合は、 -nameと続けてコマンドラインの解析を妨害しました。 -nameは、別のオプションであり、有効な式演算子ではありません。

正規表現内に否定を作成する必要があります。名前全体ではなく、ピリオドを否定します。


私は別の強力な指標を参照してください。を見つける何ですか?あなたがたぶん実行したコマンドはです。が見つかりました。 UNIXは大文字と小文字を区別します。あなたが使用しているコマンドラインで、と入力すると、またはfind --helpと表示され、オプションとセマンティクスのリストが表示されます。 Windows下にあるbashがフル機能ではないことに心配しています。


は、Windowsのコマンド改名に精通していますか? UNIX mvに似た構文を持っていますが、複数のファイルで動作します。たとえば

rename [^.]* *.html 

私は単一のディレクトリで動作すると思います。

find /path -type f \! -name "*.*" -exec mv "{}" "{}".html \; 

検索マニュアルより:コメントすべての人と左の答えに

-not expr

Same as ! expr, but not POSIX compliant. 
+0

あまりにもそれをキャッチするためにありがとう。このUNIXコードとBashコマンドをWindowsのcmdプロンプトに直接実行しようとしていました。 –

0

-notがあなたのfind版では利用できませんように、代わりに!を使用しているようです。私は私がWindowsのcmdプロンプトからこれを具体的に使用しようとしていたかどうかはわかりませんでした。私は、私のサブフォルダの終わりにすべてのファイルに拡張子を追加するには、以下の使用:

FOR /R %f IN (*.) DO REN "%f" *.html 
+0

私はこれを試しましたが、まだ "FIND:Invalid switch"エラーを受けています。 –

関連する問題