我是 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
这对我有用
#!/bin/csh
foreach file (`cat csl_nl.sts`)
set a=`echo $file | awk -F"." '{print $1}'`
echo "$a"
end
#!/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
看看这是否有帮助:
#!/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
不能说我熟悉 (t)csh,但是,这是强制性的 bash 示例:
#!/bin/bash
for file in `cat csl_ns.tst`; do
echo $file " -> " $file.cdc
cp $file $file.cdc
done
取决于输入文件的格式,但如果它们由空格或行分隔,那应该可以工作。