目標はfind
*.c ファイル保留中dos2unix
:
find . -name *.c | xargs dos2unix -f
上記のコマンドの問題を解決してください。
user@host:~/csim/exercise$ find . -name *.c
./6-1/dinph_3p.c
./6-1/dinph_pi.c
./9-2/lift.c
./6-4/cmptr.c
./8-7/station.c
./7-4/hire.c
./5-2/ran_test.c
./8-4/cmptrm.c
./9-5/trunked.c
./8-5/computer.c
./9-3/aloha.c
./12-3/mcpu.c
./10-5/abp_pi.c
./6-2/dinph_3p.c
./6-2/dinph_pi.c
BASHがディレクトリの1つ上のレベルに移動したときにこれが起こるのはなぜですか?
$ cd ..
同じコマンドが少なくとも上記の.cファイルを返しませんか?
user@host:~/csim$ find . -name *.c
find: paths must precede expression: random.c
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec|time] [path...] [expression]
ベストアンサー1
ワイルドカード文字(例*.c
:)を検索するときは、単一引用符で囲む必要があります。ディレクトリを上に移動すると、入力したディレクトリに終わるファイルが複数あることが予想されます。.c
その一つはrandom.c
。*.c
ディレクトリに次のものが含まれているとしますhi.c
。random.c
find . -name *.c
になる:
find . -name hi.c random.c
一重引用符で囲むと、*.c
シェルは拡張されません。
以下の各ファイルを見つけて処理するには.c
:~/csim
dos2unix
find ~/csim -type f -name '*.c' | xargs dos2unix -f