1

たとえば、「file-to-be-copied.txt」を別のディレクトリからコピーしたい

/home/user1/file-to-be-copied.txt
/home/user2/file-to-be-copied.txt
/home/user3/file-to-be-copied.txt

次に、ユーザー アカウントに基づいて新しいディレクトリを作成します。

/home/user4/user1/
/home/user4/user2/
/home/user4/user3/

次に、「file-to-be-copied.txt」を新しく作成したディレクトリにコピーします

/home/user4/user1/file-to-be-copied.txt
/home/user4/user2/file-to-be-copied.txt
/home/user4/user3/file-to-be-copied.txt

私が知っているのは、bash スクリプトを使用して実行する必要があるということだけですが、方法がわかりません。これは私が行く限りです

find /home . "file-to-be-copied.txt" | xargs -i mkdir ... cp {} ...
4

3 に答える 3

2

find は必要ありません。さらに、xargs も必要ありません (find には -exec があるため、ほとんどの場合、find には不要です)。

cd /home
cp --parents user?/file-to-be-copied.txt user4
于 2012-06-11T11:52:59.133 に答える
1
for f in $(/usr/bin/find '/home' -name 'file-to-be-copied.txt'); do
  tmpname=${f%/*}
  dirname=${tmpname##*/}
  /bin/mkdir -p $dirname && /bin/cp -p $f $dirname
done
于 2012-06-11T10:59:17.620 に答える
0

これは私が使用したコードです。


    for f in $(find '/home' -name 'file-to-be-copied.txt')
      do
        tmpname=${f%/*}
        dirname=${tmpname##*/}
        mkdir -p /home/user4/$dirname && /bin/cp -p $f /home/user4/$dirname

        echo $f copied to /home/user4/$dirname
      done

于 2012-06-12T14:15:35.780 に答える