この単純なスクリプトを作成して、ファイルを再帰的に多くのサブディレクトリにコピーしました。ここでは、3つのサブディレクトリの問題を示しています。次のようにディレクトリに3つのサブディレクトリと2つのファイルがあります
0.003/ 0.007/ 0.015/ program.cpp driver.sh*
以下に示すようprogram.cpp
に、これらすべてのサブディレクトリにコピーしたいmyscript.sh
:
#!/bin/bash
mydir=`pwd`
for i in `ls -la $mydir | grep "[0-9]$" | awk '{print $NF}'`
do
if [ -e $mydir/$1 ]
then
echo "cp -i $1 $i/"
else
echo "File \"$1\" not found in current directory"
fi
done
コードをテストするためにcp
内部echo
を配置しました。出力がおかしい、
cp -i program.cpp 32/
cp -i program.cpp 0.003/
cp -i program.cpp 0.007/
cp -i program.cpp 0.015/
の出力 ls -la
total 32K
drwxr-xr-x. 5 gulu workg 4.0K Nov 29 2013 .
drwxr-xr-x. 7 gulu workg 4.0K Nov 29 2013 ..
drwxr-xr-x. 2 gulu workg 4.0K Nov 26 19:09 0.003
drwxr-xr-x. 2 gulu workg 4.0K Nov 26 19:09 0.007
drwxr-xr-x. 2 gulu workg 4.0K Nov 26 19:09 0.015
-rw-r--r--. 1 gulu workg 4.2K Nov 29 2013 program.cpp
-rwxr-xr-x. 1 gulu workg 982 Nov 26 08:22 driver.sh
の出力 ls -la $mydir | grep "[0-9]$" | awk '{print $NF}'
0.003
0.007
0.015
3つの値しかありませんi
が、4つの出力をどのように生成しますか?とにかく、追加の条件で問題を解決しました[ -d $mydir/$i ]
。しかし、私の質問は、スクリプトが最初の行をどのように生成するcp -i driver.sh 32/
かということです。
@Emmanuelはい、実際にはより良い提案です。ありがとう。
—
souravc
ls -la $mydir| awk '/^d.*[0-9]$/ {print $NF}'