간단한 것을 작성하면 echo $i
문제가 없습니다. 변수가 표시됩니다. 하지만 내가 그걸로 뭔가를 하려고 하면
$($i|cut -d"." -f1-3)
그런 다음 오류 메시지가 나타납니다.
: -bash: /...file.backup: Permission denied (in root env)
누구든지 문제 해결 방법을 말해 줄 수 있습니까?
for i in $(find /directory -type f -name '*.backup')
do
echo $i $($i|cut -d"." -f1-3)
done
답변1
$i의 이전 에코를 놓친 것 같습니다.
for i in $(find /directory -type f -name '*.backup')
do
echo $i $(echo "$i"|cut -d"." -f1-3)
done`
답변2
basename
아마도 and 또는 부분 문자열을 사용할 수 있을까요 ?
참조 man basename
및http://tldp.org/LDP/abs/html/string-manipulation.html하위 문자열에 대한 세부정보입니다.
기본 이름을 사용하면 파일 이름의 첫 번째 부분을 얻을 수 있습니다. basename $i ".backup"
.backup은 파일 이름에서 제거됩니다.
${i::-7}은 변수에서 마지막 7자를 제거합니다.
답변3
2턴만에 해결. 최적은 아닐 수도 있지만 작동합니다. 다른 해결 방법을 아는 사람이 있으면 알려주시기 바랍니다.
for i in $(find /directory -type f -name '*.backup')
do
for j in $(find /directory -type f -name '*.backup'|cut -d"." -f1-3)
do
echo $i $j
done
done