私はまだこのシェルスクリプトに初めて触れています。私に与えられたミッションがあり、それを実行するのが難しいです。使命は、ddmmyyに基づく多くのディレクトリがあることです。
03Mar2014 08Aug2013 11Jan2015 16Jan2014 22Feb2014 26Mar2014
03Nov2013 08Jan2014 11Jul2013 16Jul2013 22Jul2013 26Oct2014
03Oct2013 08Jan2015 11Nov2014 16May2014 22Mar2014 26Sep2013
作業はmmyyディレクトリを作成することです。
これまで私のコードは
foreach file(`find . -type d | awk -F/ 'NF == 3'`)
echo $file
set newmove = `echo $file | cut -c 1-2,5-`
echo $newmove
mv $file $newmove
output:
for find . -type d | awk -F/ 'NF == 3':
./24Jan2015/W51A
`echo $file | cut -c 1-2,5-`
./Jan2015/W51A
mv $file $newmove
mv: cannot rename ./24Jan2015/W51A to ./Jan2015/W51A: No such file or directory
しかし、スクリプトは機能しません。これを行う方法を知っていますか?
ベストアンサー1
最初の注意:あなたの例では、ファイルddmmyy
形式は表示されません(同じディレクトリにあります)dd/mm/yy
。その場合、そのfind . -type d | awk -F/ 'NF == 3'
ファイルが見つからないため、foreach
空の引数リストについて文句を言います。
> foreach ( '' )
foreach: Variable name must begin with a letter.
2番目の注意:ファイルが見つかったと仮定すると、ステートメントは正しい適切なターゲットcut
ディレクトリを取得できません(どのファイル名形式ddmmyy
またはdd/mm/yy
正しいファイル名形式に関係なく)。
> echo '08Aug2013' | cut -c 1-2,5-
08g2013
> echo '08/Aug/2013' | cut -c 1-2,5-
08ug/2013
あなたのecho
声明はあなたのスクリプトが何をすべきかをしていないことを指摘するべきです。
各コードスニペットを個別に試して、目的の効果が表示されることを確認することが、スクリプトデバッグのための良い開始点になることがよくあります。最初から始まり、find . -type d
ステートメントに正しい/予想されるスクリプト操作が表示さmove
れるまで。echo