1

私はシェルスクリプトが初めてで、現在のディレクトリ内のすべてのファイルを.txtファイルから指定されたディレクトリにコピーし、一致する名前がある場合は現在の日付を追加するスクリプトを作成する方法を見つけようとしています上書きを防ぐために、コピーされるファイルの名前に FileName_YYYYMMDDmmss の形式で。

誰かが私を助けることができますか?

私はの線に沿って何かを考えているのを見ました

#!/bin/bash

source=$pwd          #I dont know wheter this actually makes sense I just want to
                     #say that my source directory is the one that I am in right now

destination=$1       #As I said I want to read the destination off of the .txt file

for i in $source     #I just pseudo coded this part because I didn't figure it out.   
do
   if(file name exists)
   then 
       copy by changing name
   else
       copy
   fi
done   

問題は、名前が存在するかどうかを確認し、同時にコピーして名前を変更する方法がわからないことです。

ありがとう

4

2 に答える 2

2

これはどう?ターゲット ディレクトリがファイル new_dir.txt にあると想定しています。

    #!/bin/bash

    new_dir=$(cat new_dir.txt)
    now=$(date +"%Y%m%d%M%S")

    if [ ! -d $new_dir ]; then
            echo "$new_dir doesn't exist" >&2
            exit 1
    fi

    ls | while read ls_entry
    do
            if [ ! -f $ls_entry ]; then
                    continue
            fi  
            if [ -f $new_dir/$ls_entry ]; then
                    cp $ls_entry $new_dir/$ls_entry\_$now   
            else
                    cp $ls_entry $new_dir/$ls_entry
            fi  
    done 
于 2013-07-31T14:50:44.067 に答える