users
各ユーザーの名前の付いたフォルダでいっぱいのディレクトリがあります。このフォルダにはという名前のファイルがあり、このファイルをuserinfo.csv
フォルダから取り出してに入れようとしますusers
。ユーザーフォルダ内のすべてのファイルはuserInfoと呼ばれるため、フォルダにそのユーザー名が含まれるように名前を変更したいと思います。以下を試しましたが、ユーザー名が完全なディレクトリな$dir
ので機能しません。私は名前をユーザー名に変更したくありません。名前を変更して移動するときは、ファイルや多くのusers
エラーが残らないようにする必要があります。
どうすればこれを改善できますか?
# for every subdirectory, copy userinfo.csv to /users and rename to avoid confusion/errors
for dir in /path/to/users/*/; do
(
cd "$dir" && cp userinfo.csv _$("dir").csv && cp _$("dir").csv /path/to/users/
)
done
ベストアンサー1
最終ファイル名にユーザー名が必要ない場合
for i in /path/to/users/*/userinfo.csv ; do
mv $i /path/to/users/userinfo-$RANDOM.csv
done
あなたのユースケースに適していますか?
そうでない場合は、bashのパラメータ置換を使用することもできます。
for i in /path/to/users/*/userinfo.csv ; do
mv $i /path/to/users/${i//\/-}
done
これにより、変数/
(パス+ファイル名)のすべての内容が置き換えられます。たとえば、次のように終了します。-
$i
/path/to/users/path-to-users-john-userinfo.csv
/path/to/users/path-to-users-jack-userinfo.csv