WSL에서 로컬 Windows 디렉터리를 올바르게 설정하는 방법은 무엇입니까?

WSL에서 로컬 Windows 디렉터리를 올바르게 설정하는 방법은 무엇입니까?

Linux용 Windows 하위 시스템의 명령줄에서 이 스크립트를 실행했습니다. 최신 파일을 검색하고 싶지만 "해당 파일이나 디렉터리가 없습니다"라는 오류가 발생합니다. 스크립트를 작동시키려면 어떻게 변경해야 하는지 궁금합니다.

이것은 내 스크립트입니다.

# Set the path to the directory where you want to search for the latest file
directory="C:/Users/nguyen_q/Downloads/Test files/*.csv"

# Get the current date in the format YYYY-MM-DD
echo CURRENT_DATE=$(date +%Y%m%d) 

# Set the variable to hold the name of the latest file
latest_file="" 

# Find all files in the specified directory whose name starts with "MNSUP"
echo files="$(find "$directory" -maxdepth 1 -name "MNSUP*")" 

# Sort the files by modified time, with the most recently modified file first
echo files="$(ls -t $files)" 

# Set the first file in the list as the latest file
echo latest_file="$(echo "$files" | head -n 1)" 

# Check if the latest file contains the current date in the file name
if [[ "$latest_file" == *"$CURRENT_DATE"*.csv ]]; then
  # Print a message if the latest file matches the current date
   echo "$latest_file TODAYYYYY."

else
  # Print a message if the latest file does not match the current date
  echo "$latest_file"

  # Send an email to the user
  echo "The latest file is not present and was not sent to MN.Please re run the job" | mail -s "Latest File Error" "[email protected]"    
fi 

# Print the latest file
# echo "The latest file currently in the folder is: $latest_file"```

답변1

짧은 요약:

변화:

directory="C:/Users/nguyen_q/Downloads/Test files/*.csv"

도착하다

directory="/mnt/c/Users/nguyen_q/Downloads/Test files/*.csv"

설명하다:

전체 스크립트를 테스트하지 않으면 이 No such file or directory메시지는 초기 find명령에서 나오는 것이 거의 확실합니다.

문제는 WSL을 실행할 때리눅스, Windows와는 완전히 다른 방법으로 파일과 디렉터리에 액세스합니다.

directory="C:/Users/nguyen_q/Downloads/Test files/*.csv"

...Windows 경로입니다. Linux에는 드라이브 개념이 C:\없습니다 . C:/Windows 백슬래시를 슬래시로 변환하려고 시도한 것을 확인했습니다. 이는 좋은 시작이지만 경로가 여전히 작동하지 않습니다.

이것을 테스트하는 것이 가장 쉽습니다아니요스크립트를 사용하려면 Bash 셸에서 다음 명령을 실행하세요.

directory="C:/Users/nguyen_q/Downloads/Test files/*.csv"
ls $directory

여전히 No such file or directory오류가 발생합니다.

당신이해야 할 일은 다음을 통해 디렉토리에 액세스하는 것입니다.WSL은 예를 들어 각 Windows 드라이브에 대해 자동으로 생성됩니다 C:\. 이는 (기본적으로) 다음과 같습니다:

/mnt/c

따라서 다음을 시도해 보십시오.

directory="/mnt/c/Users/nguyen_q/Downloads/Test files/*.csv"
ls $directory

이것은 작동합니다. 그런 다음 그에 따라 스크립트를 업데이트할 수 있습니다.

참고: Windows 드라이브의 파일은 현재 WSL2에서 액세스할 수 있습니다.상당히Linux ext4 파일 시스템에서 WSL이 직접 생성한 파일보다 느립니다.

더 많은 정보를 알고 싶다면:

관련 정보