0

私は Unix の初心者で、ファイル名のリストを含むファイルを持っています。同じディレクトリ内のすべてのファイルをコピーしようとしていますが、拡張子が異なります。動いていない。私のコードが csl_nl.sts は他のファイルの名前を持つファイルである理由を教えてもらえますか?

#!/bin/csh
set files = ("csl_nl.sts")
foreach file ('cat files')

  echo "Copying" $file "to" $file.cdc
  cp $file $file.cdc

end
exit 0
4

5 に答える 5

2

これは私のために働いた

#!/bin/csh

foreach file (`cat csl_nl.sts`)
    set a=`echo $file | awk -F"." '{print $1}'`
    echo "$a"
end
于 2012-07-03T10:19:31.133 に答える
2
  1. スクリプトを書くためのReal Shellを入手してください。
  2. 行の 読み方とファイル操作について聖書を読んでください。

一例

#!/bin/sh
while IFS= read -r file; do
    printf 'Moving %s to %s\n' "$file" "${file}.cdc"
    ${file:+'false'} || cp -- "$file" "${file}.cdc"
done
于 2012-07-03T07:55:03.700 に答える
0
#!/bin/ksh

OLD_EXTN=old
NEW_EXTN=new

cat csl_nl.sts | while read line;
do
  if [ ! -f $line];
  then
    echo $line does not exist ;
  else
    newfn=$(dirname $line)/$(basename $line .$OLD_EXTN).$NEW_EXTN
    echo Copy from $line to $newfn
    cp $line $newfn;
  fi
done
于 2012-07-03T08:06:59.733 に答える
-1

私が(t)cshに精通しているとは言えませんが、必須のbashの例を次に示します。

#!/bin/bash

for file in `cat csl_ns.tst`; do
echo $file  " -> "  $file.cdc
cp $file $file.cdc
done

入力ファイルのフォーマットによって異なりますが、空白または行で区切られている場合は機能するはずです。

于 2012-07-03T07:41:16.597 に答える
-1

これが役立つかどうかを確認してください:

#!/bin/csh
  set files = ("abc")
  foreach file (`cat $files`)
    set ext = ("cdc")
    set file2 = "$file.$ext"
    echo "Copying" $file "to" $file2;
    cp $file $file2;

  end
exit 0
于 2012-07-03T09:17:19.470 に答える