이 파일들이 어떻게 생겼는지 전혀 모르지만 다음은 다음과 같습니다 ls -lh
.
total 8.1G
-rw-r--r-- 1 root root 1.6G Apr 13 2022 test_some_data_S6_R2.fastq.gz?
-rw-r--r-- 1 root root 1.5G Apr 13 2022 test_some_data_S6_R1.fastq.gz
ls를 사용하여 파일 이름을 자동 완성하도록 하면 다음과 같습니다.
ls /path/to/file/test_some_data_S6_R2.fastq.gz^M
^M
DOS에서는 캐리어 리턴으로 간주되므로 누군가가 Windows 시스템에서 이름을 복사하여 파일 이름을 지정하는 데 사용했을 수도 있습니다. ^M
파일 내용을 바꿀 수 있는 방법은 많지만 제 경우에는 ^M
이름이 포함된 파일을 찾고 싶습니다.
시도했지만 find /path/with/files/ -iname "^M"
운이 없었습니다. 로 탈출을 시도했지만 \
여전히 주사위가 없습니다. 나는 SSH를 통해RHELCTRLMobaXTerm을 사용하는 컴퓨터이므로 Windows 단축키 + Q, CTRL+ 를 시도했지만 M현재 작업 창을 숨기고 ^M
.
답변1
$'\r'
Bash에서는 제어 문자를 삽입하는 데 사용할 수 있습니다 ^M
.
find /path/with/files -name '*'$'\r'
iname
glob 표현식에 문자가 포함되어 있지 않으므로 필요하지 않습니다.- 이름 앞의 이름과 일치하도록 별표를 포함해야 합니다.
^M
^M
의 조합으로 bash 명령줄에 직접 입력할 수도 있었습니다 Ctrl + v Ctrl + m. 실제 키는 bind
및 해당 할당에 따라 달라질 수 있습니다 quoted-insert
.
find /path/with/files -name '*^M'
답변2
다음은 방법에 대한 작은 변형입니다.@choroba가 답변에 게시했습니다..
텍스트 편집기에서 다음과 같은 작은 스크립트(여기서는 myscript라고 함)를 만듭니다.
#!/bin/bash
find . -name "*^M" -print0 | xargs -0 ls
여기서 유일한 비결은 문자를 ^M
문자 그대로 삽입해야 한다는 점이며, 텍스트 편집기에 따라 이를 위한 특별한 비결이 있습니다. vi 또는 vim에서는 ctrl- 입니다 K. 이맥스에서는 ctrl- 입니다 Q. 필요한 것을 사용하십시오.
그런 다음 스크립트를 실행 가능하게 만듭니다.
chmod 755 myscript
그런 다음 스크립트를 실행합니다 ./myscript
. 해당 문자로 끝나는 파일만 나열되어야 합니다 ^M
. 원하는 작업을 수행하는 경우 다음 xargs -0 ls
으로 변경 xargs -0 rm -f
하고 스크립트를 다시 실행하여 파일을 제거하십시오.