쉘 명령줄에서 이 작업을 수행할 수 있습니다.
filename="/home/vikrant_singh_rana/testing/110001_ABC Traffic_04May2020_header_only.csv"
output_filename=$(basename "$filename")
cat "/home/vikrant_singh_rana/testing/110001_ABC Traffic_04May2020_header_only.csv" > /home/vikrant_singh_rana/enrichment_files/"$output_filename"
'/home/vikrant_singh_rana/testing'
주어진 파일을 읽고 같은 이름의 파일을 다른 디렉터리에 쓸 수 있습니다 .'/home/vikrant_singh_rana/enrichment_files'
쉘 스크립트에서 동일한 작업을 수행할 때. 작동하지 않습니다
#!/bin/bash
# Go to where the files are located
filedir=/home/vikrant_singh_rana/testing/*
first='yes'
#reading file from directory
for filename in $filedir; do
#echo $filename
output_filename=$(basename "$filename")
#echo $output_filename
#done
done > /home/vikrant_singh_rana/enrichment_files/"$output_filename"
이 프로그램을 실행할 때 이 오류가 발생합니다.
/home/vikrant_singh_rana/enrichment_files/: Is a directory
답변1
경로 이름 확장( )을 잘못 사용하고 있습니다 *
. muru의 의견에 따르면 루프 내부와 외부에서 변수를 혼합하고 있습니다.
#! /bin/bash
source_dir_path='/home/vikrant_singh_rana/testing'
target_dir_path='/home/vikrant_singh_rana/enrichment_files'
cd "$source_dir_path" || exit 1
for filename in *; do
target_path="${target_dir_path}/${filename}"
test -f "$target_path" && { echo "File '${filename}' exists; skipping"; continue; }
cp -p "$filename" "$target_path"
done